當重新啓動IIS一個ASP.Net(2.0)的web應用程序,它可以:防止IIS重用工作進程單獨ASP.Net的AppDomains
- 回收在AppDomain:卸載應用程序域和加載在相同處理新的AppDomain(例如,當
HttpRuntime.UnloadAppDomain()
被調用時,當web.config中被改變)。 - 回收過程:卸載應用程序域和負載上的新處理一個新的(例如,經由INETMGR,或當達到內存限制上的程序池調用回收站命令時)。
由於一些內部原因(我們依賴的遺留本機代碼的問題),我們不能允許第一個選項。我們無法在同一個進程中加載兩次應用程序。
IIS可以以某種方式告訴絕不允許工作進程重用?
我試着通過跟蹤一個應用程序是否已經啓動了一個使用互斥鎖的進程來阻止它,如果是的話 - 在Application_Start()
期間拋出一個異常);我也嘗試在Application_End()
期間通過調用Environment.Exit()
來終止此過程。這兩種方法的問題是,它會導致在Application_End或Application_Start期間到達的任何請求失敗(不像手動進程回收,因爲它們被立即重定向到新進程而絕對沒有請求失敗)。
首先,感謝您的回覆。不幸的是,由於項目的後期階段,不可能完成# #2。 我試過#1與系統互斥體,但PROBL – 2010-09-22 09:23:42
*,但我也沒多想跳過初始化(我只認爲是「堵」在同一個過程的附加初創公司,但是這引起了一些第一次請求失敗) 。我會盡力。 – 2010-09-22 09:32:09
不幸的是,#1也變得不可能(不能跳過初始化,因爲一旦應用程序重新啓動,其中一些實際上是必需的)。 – 2010-09-26 14:00:25