我有一个在 Azure 上运行的 ASP.NET MVC 4 应用程序。我有一些看起来像文件名的自定义路由(即“favicon.ico”)。这些类似文件名的路由在过去 2 年中运行良好,没有出现任何问题。但是,当我从 Azure SDK 1.7 升级到 1.8 时,这些类似文件名的路由停止工作。
它在带有 IIS express 的本地调试环境中运行良好,因此它似乎不是 web.config 文件或 RouteCollection 问题。
我们将“runAllManagedModulesForAllRequests”设置为“true”和“RouteTable.Routes.RouteExistingFiles = true”。此外,这些类似文件的路由在磁盘上不存在。
我在升级前和升级后的机器上检查了失败的请求跟踪日志。它们看起来很相似,只是工作升级前部署有一个从“StaticFile”到“System.Web.Mvc.MvcHandler”的FREB“HANDLER_CHANGED”事件,而错误的升级后部署从来没有(它与“StaticFile”保持一致" handler) 并最终发送一个 404。
因此,如果 UrlRoutingModule 具有扩展名并因此不提供 MvcHandler,则它似乎不再正确解析路由。但是,所有非扩展路由都工作正常(即“一些/测试”),因此即使在 FREB 日志中我在“UrlRoutingModule-4.0”模块。
我错过了一些基本的东西吗?我接下来应该看哪里?
更新:将我们的 ServiceConfiguration.Cloud.cscfg 升级到“osFamily”3(Windows Server 2012),因此 IIS 8 也解决了这个问题。我不确定发生了什么,但很高兴它不再存在。我很想在评论或其他答案中听到进一步的调试见解,这可能对此类情况有所帮助,因为 FREB-ing 并没有我希望的那么有用。