Asp.net web api http路由中的默认值
我创建了两条路线Asp.net web api http路由中的默认值,asp.net-web-api,asp.net-web-api-routing,Asp.net Web Api,Asp.net Web Api Routing,我创建了两条路线 config.Routes.MapHttpRoute( "1", "int/{controller}/{Id}", new { action = "GetById" }); config.Routes.MapHttpRoute( "The rest", "int/{controller}/{action}", defaults: new { acti
config.Routes.MapHttpRoute(
"1", "int/{controller}/{Id}",
new { action = "GetById" });
config.Routes.MapHttpRoute(
"The rest", "int/{controller}/{action}",
defaults: new { action = "Get" });
认为我可以用
[HttpGet]
public string Text(string text = null)
{
}
用/int/sandpit2/text?text=xxx
调用它,但我得到的404是“在控制器'sandpit2'上找不到与名称'GetById'匹配的操作。”
我是否可以以某种方式拥有调用
GetById
的第一条规则,但是如果没有GetById
方法,是否有其他路由尝试匹配,而不是获取404s
?您的问题是路由发生在3个单独的阶段:
- 寻找匹配的路线
- 基于路由查找匹配的控制器
- 在匹配的控制器中查找匹配操作
Id
的匹配参数,所以说找不到匹配操作。如果您将其更改为,则此选项应起作用:
[HttpGet]
public string Text(string id = null)
{
...
}