我正在開發使用剃鬚刀視圖引擎的ASP.NET MVC 3面向互聯網的應用程序。該應用程序位於Win 2K8 R2 SP1上的IIS7.5中,服務器端會話狀態存儲在同一臺服務器上的SQL 2012數據庫中。會話狀態在180分鐘後設置爲超時。應用程序池空閒關閉後,ASP.NET MVC應用程序無法啓動
使用訪問遠程Web服務的自定義提供程序來實現身份驗證和成員資格。
該應用程序具有運行在集成模式下的專用.NET 4應用程序池。當「Temporary ASP.NET Files」目錄下的網站的子目錄爲空時,應用程序將正確啓動:請求到默認網頁的路由,形成身份驗證,並將用戶重定向到登錄頁面。
應用程序池空閒關閉後,訪問站點失敗,通常是403或404錯誤之一。我迄今發現的唯一允許網站重新開始的操作是刪除「Temporary ASP.NET Files」中的文件。
默認情況下,應用程序池在ApplicationPoolIdentity下運行:我嘗試使用icacls來授予應用程序池用戶(使用appcmd找到)對網站根和臨時文件夾的完全訪問權限,但無濟於事。我曾嘗試將應用程序池更改爲在LocalSystem,LocalService和NetworkService帳戶下運行,並使這些帳戶可以完全訪問這兩個目錄。
我已經嘗試修改system32 \ inetsrv \ config中的applicationHost.config,以便應用程序池始終運行,也無濟於事。增加應用程序池上的空閒關閉會增加首次失敗的時間。
同樣的症狀發生在我的開發機器IIS7(不表達)下時(筆記本運行Windows 8 & VS11,桌面運行Windows 7 & VS2010):當它發生在這些機器中的一個,在的Application_Start斷點沒有按」不受打擊;在開發過程中,更改任何.cshtml文件都可能導致失敗。
使用進程監視器我可以看到,當請求失敗時,沒有嘗試訪問Web根目錄中的任何有效文件,嘗試訪問缺省文件的默認列表失敗。
使用進程資源管理器,沒有任何東西似乎對臨時文件有任何種類的鎖定。
任何人都可以提供解決方案或解決方案的指針嗎?
在此先感謝, 保羅。
謝謝,我只是調查了一些我原來的帖子後偶然發現的東西:我使用IoC和程序集發現來建立路由表 - 它看起來可能沒有這樣一個好主意:[在IIS上的ASP.NET MVC 3給出403後一段時間,需要重新啓動應用程序池](http://stackoverflow.com/questions/6204123/asp-net-mvc-3-on-iis-給-403-後期初的時間,要求,應用程序池重啓)。 –