Asp.net mvc Azure网站没有';无法处理到';的路由;。asp&x27;文件扩展名

Asp.net mvc Azure网站没有';无法处理到';的路由;。asp&x27;文件扩展名,asp.net-mvc,asp.net-mvc-4,azure,asp.net-mvc-routing,azure-web-app-service,Asp.net Mvc,Asp.net Mvc 4,Azure,Asp.net Mvc Routing,Azure Web App Service,我的任务是重新编写一个用经典asp编写的旧网站,客户端指定页面URL结构与旧网站保持相同(我知道我可以添加301重定向,但他们希望现在看起来相同) 旧的“.asp”页面将不存在于服务器上,并且根本不会运行经典的asp,新站点是使用MVC 5构建的,它只需要旧的URL 我已经为一个特定的“Web pages”控制器创建了一个映射页面的路径,使其看起来像是具有如下所示的“.asp”文件扩展名,这在本地似乎运行良好(IIS7) 我的路线定义为: routes.MapRoute( "WebPag

我的任务是重新编写一个用经典asp编写的旧网站,客户端指定页面URL结构与旧网站保持相同(我知道我可以添加301重定向,但他们希望现在看起来相同)

旧的“.asp”页面将不存在于服务器上,并且根本不会运行经典的asp,新站点是使用MVC 5构建的,它只需要旧的URL

我已经为一个特定的“Web pages”控制器创建了一个映射页面的路径,使其看起来像是具有如下所示的“.asp”文件扩展名,这在本地似乎运行良好(IIS7)

我的路线定义为:

routes.MapRoute(
    "WebPagesASP",
    "pages/{pagename}.asp",
    new { controller = "WebPages", action = "Details", pagename = UrlParameter.Optional }
    );
但是,一旦发布到Azure网站,我在尝试查看“asp”页面时会出现以下错误。其他没有文件扩展名的路由工作正常,我也有一些到其他特定文件扩展名的路由,它们工作正常

您没有查看此目录或页面的权限

我已尝试将以下内容添加到配置中,以尝试捕获对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>

另外,设置
也不能解决问题。同样,这一切都可以在本地正常工作,但在发布到Azure网站时失败


该站点是在.Net 4.5.1上的MVC 5.1.1中构建的,请尝试删除
ASPClassic
处理程序并启用
runAllManagedModulesForAllRequests

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />
    <handlers>
      <remove name="ASPClassic" />
    </handlers>
</system.webServer>

您是否尝试使用不同的模块类型

<add name="AspFileHandler" path="*.asp" verb="GET" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />

好吧,让人尴尬的是,这是我自己的设置。为了使开发更快,我从另一个项目的配置转换中复制了一组重写规则。这些规则包括以下内容:

<rule name="Block unauthorised file extensions" stopProcessing="true" xdt:Transform="Insert">
    <match url=".*\.(exe|php|pl|phtml|inc|asp|dll|jsp)(/.*)?"/>
    <action type="CustomResponse" statusCode="403" />
</rule>

这将阻止URL以“.asp”结尾的任何请求,并返回403状态代码

我得到的是,这在本地运行良好,这是有意义的,因为转换仅在发布时应用


我从正则表达式中删除了“| asp”,它运行良好。谢谢你的回答

谢谢,我已经尝试了
runAllManagedModulesForAllRequests='true'
,我也尝试了按照您的建议删除ASPClassic处理程序,但仍然遇到同样的问题。您问题中包含的代码只删除了
UrlRoutingModule
。您是否也尝试过删除
ASPClassic
?是的,我尝试过,但仍然存在相同的问题,谢谢。