将应用程序池idletimeout设置为0副作用

时间:2012-07-04 14:15:53

标签: asp.net application-pool static-variables

我在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.我将其更改为0从IIS应用程序池中,问题消失了,应用程序池不再循环使用了。我想知道这个设置是否有任何副作用。

2 个答案:

答案 0 :(得分:2)

这意味着即使在没有连接的延长期后,应用程序池进程也不会自行关闭。如果你不担心在低使用期限内清理资源,那就完全没问题了。

如果您想要避免需要将变量正确存储在内存中(可能存储在数据库中),您仍会在其他循环中发生变量擦除。

答案 1 :(得分:2)

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

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

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