【问题标题】:Why does the default http route does not contain {action}为什么默认的http路由不包含{action}
【发布时间】:2017-01-20 18:39:25
【问题描述】:

为什么默认的Web Api 2 http路由不包含{action}

来自微软示例:

// Configure Web API for self-host. 
HttpConfiguration config = new HttpConfiguration(); 
config.Routes.MapHttpRoute( 
    name: "DefaultApi", 
    routeTemplate: "api/{controller}/{id}", 
    defaults: new { id = RouteParameter.Optional } 
); 

为什么不像这样:

// Configure Web API for self-host. 
HttpConfiguration config = new HttpConfiguration(); 
config.Routes.MapHttpRoute( 
    name: "DefaultApi", 
    routeTemplate: "api/{controller}/{action}/{id}", 
    defaults: new { id = RouteParameter.Optional } 
); 

为什么正确路由不需要操作部分?

代码是romhttp://www.asp.net/web-api/overview/hosting-aspnet-web-api/use-owin-to-self-host-web-api

非常感谢!

【问题讨论】:

  • 因为在该模式下,方法由 Http 动词(Get、POST、PUT)和参数匹配。您可以添加{action},然后通过方法名称匹配。

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


【解决方案1】:

示例中的操作是隐式匹配的。如果你看,它们都是不同的 HTTP 动词。

【讨论】:

  • 好的,那么添加{action} 不会造成任何问题吗?非常感谢!
  • 如果我是你,我会改用Attribute Routing。它更明确。我从来不用更改默认路由。
  • 感谢您的提示!
  • 如果你想具体回答你的问题,这个问题很相似stackoverflow.com/questions/13596391/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-21
  • 1970-01-01
  • 2013-09-06
  • 1970-01-01
  • 2012-03-27
  • 1970-01-01
相关资源
最近更新 更多