我的任务是重写一个用经典 asp 编写的旧网站,客户已指定页面 URL 结构与旧网站保持相同(我知道我可以添加 301 重定向,但他们希望它看起来像现在也一样)。
旧的“.asp”页面将不会存在于服务器上,并且根本不会运行经典的 asp,新站点是使用 MVC 5 构建的,它只需要旧的 URL。
我已经创建了一个路由来映射特定“网页” Controller 的页面,使其看起来具有“.asp”文件扩展名,如下所示,这似乎在本地运行良好(IIS7)。
我的路线定义为:
routes.MapRoute(
"WebPagesASP",
"pages/{pagename}.asp",
new { controller = "WebPages", action = "Details", pagename = UrlParameter.Optional }
);
但是,一旦发布到 Azure 网站,我在尝试查看“asp”页面时收到以下错误。其他没有文件扩展名的路由工作正常,我还有一些到其他特定文件扩展名的路由,它们按预期工作。
You do not have permission to view this directory or page.
我尝试将以下内容添加到配置中以 try catch 对 asp 文件的请求:
<system.webServer>
<handlers>
<add name="OldASPUrlRoutingHandler" type="System.Web.Routing.UrlRoutingHandler, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" path="*.asp" verb="GET"/>
</handlers>
<modules>
<remove name="UrlRoutingModule" />
<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</modules>
</system.webServer>
同时设置<modules runAllManagedModulesForAllRequests="true">
并不能解决问题。同样,这一切在本地工作正常,但在发布到 Azure 网站时失败。
该网站是在 .Net 4.5.1 上的 MVC 5.1.1 中构建的
最佳答案
尝试删除 ASPClassic
处理程序并启用 runAllManagedModulesForAllRequests
:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
<handlers>
<remove name="ASPClassic" />
</handlers>
</system.webServer>
关于asp.net-mvc - Azure 网站不处理到 '.asp' 文件扩展名的路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23321251/