Asp.net mvc 如何重定向子文件夹中的所有文件访问请求?

Asp.net mvc 如何重定向子文件夹中的所有文件访问请求?,asp.net-mvc,routing,Asp.net Mvc,Routing,现在我有这个 routes.MapRoute( name: "TestRedirect", url: "Test/{*pathInfo}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); 我希望所有被测试的访问请求都被重定向到~/Home/Index。 但不幸的是,这不适用于文件访问,例如/Test/index.html。 但只有aspx文件(

现在我有这个

routes.MapRoute(
    name: "TestRedirect",
    url: "Test/{*pathInfo}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
我希望所有被测试的访问请求都被重定向到~/Home/Index。 但不幸的是,这不适用于文件访问,例如/Test/index.html。 但只有aspx文件(如/Test/index.aspx)被正确重定向

有人能帮我修一下线路吗


非常感谢。

之所以这样,是因为静态文件直接由IIS处理,而不是传递到ASP.NET进行处理。请求从未到达您的应用程序,因为IIS认为它是静态文件。如果您使用的是集成管道模式,只需注册以下处理程序即可确保对
/Test
的所有请求都通过托管管道和路由规则:

<system.webServer>
    <handlers>
        <add 
            name="TestFolderHandler" 
            path="Test/*" 
            verb="GET" 
            type="System.Web.Handlers.TransferRequestHandler" 
            preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>
</system.webServer>

只需添加答案供参考

您的代码很好,只需添加

routes.RouteExistingFiles = true;

你想使用pathinfo还是忽略它并使用/Home/Index?@DaveA实际上我不需要使用它。我只是拿着它像一张外卡一样工作。