Web API - IgnoreRoute returns 奇怪的 404 页面

Web API - IgnoreRoute returns strange 404 page

我添加了以下路线:

    // Ignore the alternate path to the home page
    routes.IgnoreRoute("Home/Index");
    routes.IgnoreRoute("Home");

    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new {  id = UrlParameter.Optional }
    );

正在访问:http://localhost:60832/home (请注意 HOME 是一个已知的控制器,但如上所示在路由中被忽略)

正在访问:http://localhost:60832/testme 我得到这个 404 页面:

为什么它们如此不同? 为什么返回的不是相同的 404 页面?

请注意,这发生在 WebAPI 和 MVC Web 应用程序项目上,定义了相同的路由。

因为对于 /home 你已经通过忽略它来处理异常,这就是你得到正确 404 的原因。

对于错误的 controller/action (testme/indexa),它正在路由 table 中查找它并抛出未处理的异常,我没有找到任何此名称的资源 (URI)。

为了防止路由处理对 URL 模式的请求,您可以使用 StopRoutingHandler

 routes.Add(new Route("{resource}.axd/{*pathInfo}", new StopRoutingHandler()));