如何在子文件夹中重定向所有文件访问请求?

时间:2013-03-01 20:30:08

标签: asp.net-mvc routing

目前我有这个

routes.MapRoute(
    name: "TestRedirect",
    url: "Test/{*pathInfo}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

我希望所有在Test下访问的请求都被重定向到〜/ Home / Index。 但不幸的是,这对于/Test/index.html等文件访问不起作用。 只有aspx文件(如/Test/index.aspx)可以正确重定向。

有人可以帮我修复路由吗?

非常感谢。

2 个答案:

答案 0 :(得分:0)

原因是因为静态文件由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>

答案 1 :(得分:0)

只需添加答案以供参考。

您的代码很好,您只需要添加

routes.RouteExistingFiles = true;