0

目前我有这个

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)被正确重定向。

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

非常感谢。

4

2 回答 2

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>
于 2013-03-01T23:06:12.623 回答
0

只是添加答案以供参考。

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

routes.RouteExistingFiles = true;
于 2018-04-06T02:03:24.643 回答