2012-07-04 73 views
3

我有一個Web應用程序在IIS7下運行。我將我的全局變量存儲在帶有靜態變量的類中。該類稱爲SessionVariables和裏面,比如我有以下幾點:設置應用程序池idletimeout爲0的副作用

public class SessionVariables 
{ 
    public static string PreferedColor= "Black"; 
} 

我設置這個變量在另一頁AccountSettings.aspx在那裏我有顏色名稱的下拉。當用戶選擇一種顏色,並點擊保存,這是正在運行的代碼。

protected void btnSave_click(object sender, EventArgs e) 
    { 
    SessionVariables.PreferedColor= ddlColorNames.Text; 
    } 

如果申請去閒置5分鐘PreferedColor的靜態值始終重置爲默認值,因爲由於空閒超時的應用程序池設置被清除靜態值(分鐘)設置爲5。我將其從IIS應用程序池更改爲0,問題消失,應用程序池不再回收。我想知道這個設置是否有任何副作用。

回答

2

解決,它是在web.config中在5分鐘 我已經加入以下內容,一切順利

<sessionState mode="InProc" cookieless="false" timeout="480"/> 

<forms loginUrl="~/Login.aspx" slidingExpiration="true" timeout="480" /> 
2

這意味着應用程序池進程即使在長時間沒有連接後也不會自行關閉。如果您不擔心在低使用期間清理資源,則完全沒問題。

如果您想避免您需要正確地將變量正確存儲在內存中(可能位於數據庫中),如果發生其他回收事件,您仍將清除變量。

+0

後清零靜態變量缺少配置感謝Steve,這些變量是應用程序全局變量。你知道如果將它們從靜態類中的靜態變量更改爲Session []變量將執行該作業還是將它們清除?將它們添加到數據庫不是一個選項。 –

+0

我不是100%,但我相信你必須做的不僅僅是一個普通的Session變量,你必須看看這裏:http://msdn.microsoft.com/en-us/library/ms178586。 aspx來完整地閱讀它,但基本上你需要StateServer或SQLServer類型的會話,所以它會持續圍繞回收。 –

相關問題