会话结束后应用程序变量重置

时间:2013-01-06 06:27:30

标签: asp.net asp.net-mvc

我想在我的ASP站点中插入一个访问者计数器,所以我使用了一个global.asax文件来实现它。问题是会话结束时“AllVisitorCount”获取默认值,在我的web.Config中设置为0。

代码是:

void Session_Start(object sender, EventArgs e) {
  // Code that runs when a new session is started
  int allVisitorCount = 0;
  if (Application["AllVisitorCount"] != null)
    allVisitorCount = (int)(Application["AllVisitorCount"]);
  else
    Application.Add("AllVisitorCount", 0);
  allVisitorCount++;
  Application["AllVisitorCount"] = allVisitorCount;
}

3 个答案:

答案 0 :(得分:1)

确保在web.config中将slidingExpiration设置为False

答案 1 :(得分:1)

“应用程序”不是永久对象。它是在应用程序启动后创建的(例如,第一个会话已启动),并在应用程序池超时后进行处置。您可以保留变量或只是更改AppPool中的“空闲超时”参数(IIS =>应用程序池=>您的AppPool(如果尚未定义,则为DefaultAppPool)=>高级设置=>闲置超时)。

答案 2 :(得分:0)

您的应用程序池可能会超时,从而清除所有应用程序变量。

请提供更多详细信息,例如:这是托管在IIS,IIS Express,Cassini; Session如何结束(以编程方式,超时等);你有没有在Application_End上放置一个断点来查看事件是否被触发。