3

我有一个在 IIS7 下运行的 Web 应用程序。我将全局变量存储在具有静态变量的类中。该类称为 SessionVariables ,例如,在其中我有以下内容:

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池和问题消失了,应用程序池不再回收。我想知道此设置是否有任何副作用。

4

2 回答 2

2

这意味着即使在长时间没有连接之后,应用程序池进程也不会自行关闭。如果您不担心在低使用率期间清除资源,则将其关闭是完全可以的。

如果发生其他回收,您仍然会擦除变量,如果您想避免需要正确存储变量而不仅仅是在内存中(可能在数据库中)。

于 2012-07-04T14:47:34.097 回答
2

解决了,这是web.config中缺少的配置,在 5 分钟后清除了静态变量我添加了以下内容,一切顺利

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

 <forms loginUrl="~/Login.aspx"  slidingExpiration="true" timeout="480" />
于 2012-07-18T11:06:06.303 回答