控制器取自Url,尽管在Url-c#.NETMVC4中未请求任何控制器

控制器取自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(

我目前在一个.NET4.5MVC4Web应用程序中工作。 我有以下路线:

            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 }
        );
现在当我输入URL
http://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
controllers
ReturnStuffA
操作吗?如果是这种情况,则必须创建一个接受名为id的字符串参数的操作。