C# c中同一API控制器内http POST请求的多个路由#
我正在实现后端控制器,其中两个http post请求使用两个独立的路由(routea和routeb),并使用两个不同的操作: 例如: 以下是控制器的配置方式:C# c中同一API控制器内http POST请求的多个路由#,c#,.net,asp.net-web-api2,C#,.net,Asp.net Web Api2,我正在实现后端控制器,其中两个http post请求使用两个独立的路由(routea和routeb),并使用两个不同的操作: 例如: 以下是控制器的配置方式: var config = new HttpConfiguration(); config.Routes.MapHttpRoute( name: "ControllerAndAction", routeTemplate: "api/work/{controller}"); 以下是控制器
var config = new HttpConfiguration();
config.Routes.MapHttpRoute(
name: "ControllerAndAction",
routeTemplate: "api/work/{controller}");
以下是控制器的实现:
[RoutePrefix("api/work")]
public class MyController : ApiController
{
[HttpPost]
[Route("routea")]
public HttpResponseMessage RouteA(HttpRequestMessage request)
{...}
[HttpPost]
[Route("routeb")]
public HttpResponseMessage RouteB()
{...}
}
我似乎无法开始执行这些函数。另一方面,如果其中两个调用保存在一个单独的控制器(例如AController.cs和BController.cs)中,则一切正常。我需要在同一控制器类中有两条路由。这里出了什么问题?如果您使用这样的结构来定义基本路由配置,那么您可以使用“routea”和“routeb”作为控制器的名称
routeTemplate: "api/work/{controller}");
请尝试以下方法:
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
在这种情况下,控制器的实现应该一切正常。我看不出您在哪里注册属性路由。如果对RouteB进行了注释,则RouteA工作正常,它们以前在单独的控制器类中,并且工作正常。我想这可能是由于方法签名。如果您使其中一个路由方法接收参数(例如…类对象/string/int或其他任何参数)…同样,您在哪里调用
MapHttpAttributeRoutes
?请在问题中包括您的完整路由注册。