如何在ASP.NET MVC 4中定义一个catch(绝对)所有路由

dem*_*mdh 7 asp.net-mvc wildcard asp.net-mvc-routing

我想定义捕获所有请求的所有路由的catch.

我尝试过以下路由定义:

routes.MapRoute("CatchAll", "{*stuff}", new { controller = "Proxy", action = "Proxify", stuff = UrlParameter.Optional });
Run Code Online (Sandbox Code Playgroud)

只要它们不包含像in这样的文件名,它就会捕获所有请求 http://localhost/vault/11/Test.docx

如何定义一个路径,将主机名后面的每个字符串作为字符串传递给我的控制器?

我已经通过将以下内容插入到我的web.config文件中找到了解决问题的方法:

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />
</system.webServer>
Run Code Online (Sandbox Code Playgroud)

Mat*_*caj 0

我相信默认情况下,ASP.NET 包含许多用于处理不同文件类型的模块。这意味着,如果请求的资源与这些已知文件类型之一(例如*.asp*.aspx)相匹配,则相应的模块将处理该请求,而不是 MVC 请求。