我有一個在Azure上運行的ASP.NET MVC 4應用程序。我有一些自定義的路徑,看起來像文件名(即「favicon.ico」)。這些類似文件名的路由在過去的2年中運行良好,沒有任何問題。但是,當我從Azure SDK 1.7升級到1.8時,這些類似文件名的路由停止工作。帶有文件擴展名的ASP.NET MVC路由不再適用於生產
它在IIS Express的本地調試環境中工作正常,因此它看起來不是web.config文件或RouteCollection問題。
我們將「runAllManagedModulesForAllRequests」設置爲「true」和「RouteTable.Routes.RouteExistingFiles = true」。此外,這些類似文件的路由在磁盤上不存在。
我在升級前和升級後的機器上都檢查了失敗的請求跟蹤日誌。它們似乎是相似的,只是正在工作的升級前部署具有從「StaticFile」到「System.Web.Mvc.MvcHandler」的FREB「HANDLER_CHANGED」事件,而錯誤的升級後部署從來不會這樣做(它保留在「StaticFile 「處理程序),並最終發送一個404.
因此,UrlRoutingModule似乎不再正確解析路由,如果它有一個擴展名,並因此不給予MvcHandler。然而,所有非擴展路由工作正常(即「一些/測試」),所以它似乎現在阻止具有擴展的路由的解決方案,即使在FREB日誌中,我看到「NOTIFY_MODULE_START」 「UrlRoutingModule-4.0」模塊。
我缺少一些基本的東西嗎?我應該在哪裏看下?
更新:將我們的ServiceConfiguration.Cloud.cscfg升級到「osFamily」3(Windows Server 2012),因此IIS 8也使此問題消失。我不確定發生了什麼,但很高興它不再存在。我很樂意聽到關於進一步調試見解的評論或其他答案,這些見解可能對這些情況有所幫助,因爲FREB-ing沒有我希望的那麼有用。
您在Cloud Service中使用什麼操作系統版本? – viperguynaz 2013-03-11 20:31:31
W2K8R2 - > osFamily =「2」osVersion =「*」schemaVersion =「2012-10.1.8」 – 2013-03-11 20:32:31