WebApi 路由不适用于 Post

WebApi Routing not working for Post

我的 WebApiConfig 有以下路由

      // Web API routes
        config.MapHttpAttributeRoutes();

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

PostWebApi 方法有以下签名

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

    }

当我尝试调用此方法时,我得到 "Method not allowed"

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

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

我不明白这是怎么回事。我希望它与属性路由一起使用。任何人都可以建议这里有什么问题。 GET 和 Post 路由会混淆吗?

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

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

现在您可以通过常规路由像 http://{siteurl}/api/employee/ 这样调用下面的 API。

[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