我创建了两条路线
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
?
答案 0 :(得分:0)
您的问题是路由分三个阶段发生:
因此,在您的情况下,第一条路线有资格获得URL并进入您的控制器。然后它找不到Id
的匹配参数,因此说无法找到匹配的操作。如果你改变它应该工作:
[HttpGet]
public string Text(string id = null)
{
...
}