淺談ASP.NET定期回收
我們在 IIS 5 服務器上安裝了 ASP.NET,以通過 Web 提供 .NET 應用程序。這個應用程序運行得很好,只是 aspnet_wp.exe 進程消耗過多的內存,并會被 ASP.NET定期回收。我們喜歡回收功能,但是我們希望可以ASP.NET定期回收,而不是等到內存很低后才進行回收。在 IIS 5 中,我們通常使用 IIS 5 進程回收工具完成此操作。我們該如何讓 ASP.NET 也和IIS 5 進程回收工具一樣,按設定的時間執行回收操作。
IIS 5 進程回收工具 (英文)是一個非常有用的工具,有了它,您可以將 IIS 5 配置為根據 http gets 的數量、時間、內存消耗量以及其他參數重新啟動。這個工具是在發布 ASP.NET 前開發的,因此它根本無法識別 aspnet_wp.exe 這個在 IIS 5 服務器上運行 ASP.NET 應用程序的文件。然而,當使用進程回收工具、IISRESET 以及任何其他方法回收 IIS 時,ASP.NET 也會重新啟動;不過您還可以使用內置在 ASP.NET 中的配置元素,單獨回收 ASP.NET.這可以通過 ASP.NET 的 web.config 文件中的進程配置設置來實現。默認情況下,web.config 位于 %systemroot%\\Microsoft.Net\\Framework\\v\\CONFIG 目錄中。它是一個 XML 文件,您可以使用記事本等文本編輯器來打開和編輯它。打開這個文件并搜索“processmodel".這將定位到進程模式配置部分,其中包含以下具有注釋內容的節:
注意,可以為上面的“timeout"變量設置一個單位為時、分、秒的值,這個值指定了 aspnet_wp.exe 進程的生存時間。當 ASP.NET 啟動 aspnet_wp.exe(它在首次啟動時調用一個需要 ASP.NET 的頁面)時,該計時器開始計時。當 asnet_wp.exe 進程”活著"的時間等于超時值時,將會被回收。
盡管這不同于設定一個日期和時間來回收 ASP.NET 進程,但是這可以實現ASP.NET定期回收,并且可以保證應用程序的正常運行。另外,您可以控制這個回收操作的其他方面,例如在工作進程不再使用時關閉它(從而實現在非高峰期執行回收操作)。
ASP.net 1.1開發的Web應用程序,在升級到2.0或3.5以后,通過IIS7發布。
程序中認證方式采用Form認證,Web.Config文件中代碼如下:
- <authentication mode="Forms">
- <forms loginUrl="Pages\SystemPage\Login\logon.aspx" name=
".ADUAUTH" protection="All">- </forms>
- </authentication>
【遇到問題現象】
認證登錄后,程序始終顯示登錄頁 logon.aspx通過程序跟蹤,發現 logon.aspx.cs中SetAuthCookie() 和 RedirectFromLoginPage()執行后均無效,無法改變Request.IsAuthenticated值,始終為false;
【解決方案】
運行IIS7 -> 該Web程序 -> 身份驗證 -> Form身份驗證 -> 編輯
【編輯推薦】