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()));
我添加了以下路线:
// 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()));