我的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路线是否会混淆?
答案 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
找到参考资料