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