控制器取自Url,尽管在Url-c#.NETMVC4中未请求任何控制器
我目前在一个.NET4.5MVC4Web应用程序中工作。 我有以下路线:控制器取自Url,尽管在Url-c#.NETMVC4中未请求任何控制器,c#,asp.net-mvc-4,asp.net-mvc-routing,webrequest,C#,Asp.net Mvc 4,Asp.net Mvc Routing,Webrequest,我目前在一个.NET4.5MVC4Web应用程序中工作。 我有以下路线: routes.MapRoute( name: "Default", url: "api/", defaults: new { controller = "Response", action = "ReturnAllStations" } ); routes.MapRoute(
routes.MapRoute(
name: "Default",
url: "api/",
defaults: new { controller = "Response", action = "ReturnAllStations" }
);
routes.MapRoute(
name: "ID",
url: "api/{id}",
defaults: new { controller = "Response", action = "ReturnStuffA", id = UrlParameter.Optional }
);
现在当我输入URLhttp://localhost:55302/api/
一切正常。但当我输入这样的URL时:http://localhost:55302/api/SampleId1234
我收到以下错误“未找到与名为“Sample1234”的控制器匹配的类型。”
为什么它尝试获取名为Sample1234的控制器而不是defautlt控制器,并使用Sample1234作为参数?您的默认路由应该排在最后。Route config将从上到下查找配置,当它找到匹配项时,立即返回并调用该操作
在您的情况下,始终调用第一个配置,因为它与
api/
配置匹配。您可以更改规则的顺序吗?我更改了顺序,但现在api/{id}出现了相同的错误我得到的响应是,仅使用api/这个http://localhost:55302/api/SampleId1234
您试图调用什么?它是以SampleId1234作为id
参数的Response
controllersReturnStuffA
操作吗?如果是这种情况,则必须创建一个接受名为id的字符串参数的操作。