asp.net-mvc - Azure 网站不处理到 '.asp' 文件扩展名的路由

标签 asp.net-mvc asp.net-mvc-4 azure asp.net-mvc-routing azure-web-app-service

我的任务是重写一个用经典 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/

相关文章:

c# - 依赖注入(inject)(使用 SimpleInjector)和 OAuthAuthorizationServerProvider

asp.net - 如何将 .aspx 页面添加到现有的 MVC 4 项目?

c# - 使用 Ajax 发布的 MVC 中的文件附件

c# - 检查 URL 是否指向 Azure Blob

node.js - 在 Azure 应用服务中运行 Storybook(不是静态 Storybook)

asp.net-mvc - 这称为什么类型的架构?

c# - 在 asp.net 应用程序中运行任务计划?

javascript - 如何将数据从父窗口传递到子弹出窗口

node.js - 使用 Azure 管理 API 进行身份验证时出现 403 错误 - nodejs

c# - 使用 MVC 自定义身份验证