Routing WebApi路由不适用于Post
我的WebApiConfig有以下路径Routing WebApi路由不适用于Post,routing,asp.net-web-api2,asp.net-web-api-routing,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 = "Em
// 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方法更改为following,它将开始工作
[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
现在,您可以通过常规路由调用下面的API,如http://{siteurl}/API/employee/
[HttpPost]
public IHttpActionResult Post(Employee emp)
{
...
}
现在,您可以调用以下API,如http://{siteurl}/API/employee/post/by attribute routing:
[Route("api/employee/post")]
[HttpPost]
public IHttpActionResult Post(Employee emp)
{
...
}
此处[Route]参数添加路由,称为属性路由。
您可以在此处找到参考资料您很可能遇到了文章中描述的问题。在路由图中添加一个以上的参数,这是另一个问题。在我的例子中,它返回405错误方法not Allowed您尝试使用什么URL进行POST和GET?Api/employee/POST和Api/employee/GET在您的默认路由中,您正在设置action=“GET”,因此您无法使用传统路由机制调用POST Api。找到下面的答案,使用常规路由和属性路由使用api。