0

我想在我的 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;
}
4

3 回答 3

1

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

于 2013-01-06T08:41:33.773 回答
1

确保你的 web.config 中的 slipExpiration 设置为 False

于 2013-01-06T06:42:13.123 回答
0

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

请提供更多详细信息,例如:这是否托管在 IIS、IIS Express、Cassini 中;会话如何结束(以编程方式、超时等);您是否在 Application_End 上放置了断点以查看是否触发了事件。

于 2013-01-06T06:53:54.140 回答