2011-04-11 50 views
0

我有一個ASP.NET網站,在某些非常罕見的情況下會導致大量請求失敗。錯誤被捕獲並記錄在我所有頁面的基類的OnError覆蓋中,所以我知道何時發生錯誤。發生錯誤時在ASP.NET站點上重置IIS

因爲這個錯誤是非常罕見的我想重置iis,當它發生,所以該網站將正常返回到功能。

我的問題:在下面的OnError代碼中,我如何導致IIS重置? 我可以運行iisreset或使用類似 System.Environment.Exit(-1)的方式導致iis崩潰。什麼是重置iis的首選方法?

Protected Overrides Sub OnError(ByVal e As EventArgs) 
     LogException(Server.GetLastError()) 
     MyBase.OnError(e) 
    End Sub 
+0

好像你想切割你坐在同一個分支? :)順便說一句,如果你重新啓動IIS它應該顯示應用程序不可用的持續時間IIS重新啓動,如果由於某種原因IIS無法再次啓動........... ??希望你應該尋找別的東西。 – 2011-04-11 07:11:40

+0

它可能不適用於您,但是當您重新啓動IIS(或回收應用程序池)時,該服務器(或應用程序池)上的所有站點都將被重置,這也意味着所有(在內存中)會話都會丟失。 – 2011-04-11 07:21:06

回答

0

首先,正如其他指出的那樣,您需要重新啓動ASP.NET應用程序而不是IIS(Web服務器)。兩種方式來實現,這可能是

  1. 要碰(修改)的web.config(類似的替代方法是觸摸/修改bin文件夾)
  2. 要問的AppDomain卸載(使用HttpRuntime.UnloadAppDomain

檢查this article討論這種方法。

我還建議你考慮週期應用程序池回收(可能來自IIS配置)作爲替代方案。一個

+0

我已經有泳池回收。如果在營業時間內發生錯誤,我會看到我收到的錯誤電子郵件,並且通常會很快修復它,但如果問題發生在凌晨2點,並且池在任何時間後再次回收,我只會在上午和所有時間之間看到錯誤該網站將無法正常工作。因爲這個特定的錯誤是非常罕見的,我並不擔心網站幾秒鐘不可用(遠遠好於一個網站不工作幾個小時) – 2011-04-12 05:56:47

相關問題