Application_Start() 在 IIS7.5 託管的 MVC 5 應用程序中呼叫了兩次
在將我所有的解決方案轉移到新安裝的機器上(這讓我認為這是一個配置問題)之後,我的 MVC 5 Web 應用程序現在遇到了這個問題。
當我建構我的 Web 應用程序(VS 2013)時,這當然會重新生成所有 Web 程式碼,並且 IIS 將在下一頁載入時重新啟動應用程序。但是現在看來,當我轉到我的開始/登錄頁面時,Application_Start() 按預期觸發,但是當頁面送出時,在到達 HttpPost 方法之前,整個應用程序似乎再次啟動(Application_Start 再次執行)。這第二次開始似乎發生在第一次 Application_End() 被呼叫之前……但不管順序如何,我不知道為什麼現在這是一個問題。
檢查 Application_End() 中的應用程序關閉原因,我得到了臭名昭著的模糊(並且顯然完全沒有記錄)“BuildManagerChange”…… MSDN 給出了一些可笑的模糊描述。
有誰知道為什麼這會在將我的開發環境載入到新機器上後開始。兩台機器都是執行 IIS7.5 的 Win7 Pro,我相信 IIS 配置與舊的相同(雖然,顯然不是??)。原始碼/web.config/etc 在機器之間沒有變化。
我能找到的關於這個問題的唯一文件是關於使用 IISExpress,但是我使用的是隨 Win7 pro 安裝的標準 IIS7.5。
編輯:從站點的整個啟動中刪除所有自定義程式碼,並將我的 LoginController 恢復為原始的簡單形式(無自定義程式碼)後,這仍然會發生。
好吧,在這上面浪費 2 天很有趣!但是,這已經解決了。執行 procmon 表明 mcshield.exe (McAfee AV) 正在訪問 hash.web。顯然,實時“訪問掃描程序”檢查了 asp.net 記憶體,並且 IIS 以某種方式意識到了這一點,並認為它需要再次重建站點。出於某種原因,McAfee 在第一次之後沒有對其進行檢查,因此在第二次建構/重新啟動後它可以正常執行。我在 c:\Windows\Microsoft.NET 文件夾中添加了一個掃描器排除項,這似乎解決了這個問題。–