WebApi路由不适用于帖子

时间:2015-06-15 21:56:26

标签: routing asp.net-web-api2 asp.net-web-api-routing

我的WebApiConfig有以下路线

      // Web API routes
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { controller = "Employee", action = "Get", id = RouteParameter.Optional }
        );

Post WebApi方法获得了以下签名

    [HttpPost]
    public IHttpActionResult Post(Employee emp)
    {
         .....

    }

当我尝试调用此方法时,我收到“方法不允许”

如果我将我的Post方法改为跟随它开始工作

    [Route("api/employee/post")]
    [HttpPost]
    public IHttpActionResult Post(Employee emp)
    {
        ...
    }

我没有得到什么问题。我希望这与属性路由一起使用。任何人都可以在这里提出什么问题。 GET和Post路线是否会混淆?

1 个答案:

答案 0 :(得分:2)

设置您的默认路线,如下所示:

config.MapHttpAttributeRoutes(); //this enables attribute routing

routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional }
); //this route is for conventional routing

现在您可以通过传统路由调用以下API,例如http:// {siteurl} / api / employee /。

[HttpPost]
public IHttpActionResult Post(Employee emp)
{
   ...
}

现在您可以通过属性路由调用以下API,例如http:// {siteurl} / api / employee / post /:

[Route("api/employee/post")]
[HttpPost]
public IHttpActionResult Post(Employee emp)
{
   ...
}

此处[Route]参数添加路由,称为属性路由。 你可以在Routing and Action Selection

找到参考资料