Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# c中同一API控制器内http POST请求的多个路由#_C#_.net_Asp.net Web Api2 - Fatal编程技术网

C# c中同一API控制器内http POST请求的多个路由#

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}"); 以下是控制器

我正在实现后端控制器,其中两个http post请求使用两个独立的路由(routea和routeb),并使用两个不同的操作:

例如:

以下是控制器的配置方式:

    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
?请在问题中包括您的完整路由注册。