控制器取自Url,尽管URL中没有请求控制器 - c#.Net MVC 4

时间:2013-11-27 10:53:04

标签: c# asp.net-mvc-4 asp.net-mvc-routing webrequest

我目前正在使用.NET 4.5 MVC 4 Web应用程序。 我有以下路线:

            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 }
        );

现在,当我输入网址http://localhost:55302/api/时,一切正常。但是,当我输入这样的URL:http://localhost:55302/api/SampleId1234时,我收到以下错误“未找到与名为'Sample1234'的控制器匹配的类型。”

为什么它会尝试获取名为Sample1234的控制器而不是defautlt控制器并使用sample1234作为参数?

1 个答案:

答案 0 :(得分:1)

您的默认路线应该是最后的。 Route config将从上到下查找配置,当找到匹配时,立即返回调用该操作。

在您的情况下,始终调用第一个配置,因为它与api/配置匹配。