求助在线人数问题!请高手指点...

xt38kma7 2006-11-02 03:36:03
protected void Application_Start(Object sender, EventArgs e)
{

Application["conn"]=ConfigurationSettings.AppSettings["DSN"];
Application["user_sessions"] = 0;
Application["counter_num"]=0;


uint count=0;
StreamReader srd;
//取得文件的实际路径
string file_path=Server.MapPath ("counter.txt");
//打开文件进行读取
srd=File.OpenText (file_path);
while(srd.Peek ()!=-1)
{
string str=srd.ReadLine ();
count=UInt32.Parse (str);
}
object obj=count; //
Application["counter"]=obj;
srd.Close ();




}

protected void Session_Start(Object sender, EventArgs e)
{
Application.Lock();
Application["user_sessions"] = (int)Application["user_sessions"] + 1;
Application.UnLock();

Application.Lock ();
//数值累加,注意这里使用了装箱(boxing)
uint jishu=0;
jishu=(uint)Application["counter"];
jishu=jishu+1;
object obj=jishu;
Application["counter"]=obj;
//将数据记录写入文件
string file_path=Server.MapPath ("counter.txt");
StreamWriter fs=new StreamWriter(file_path,false);
Session.Timeout=1;
fs.WriteLine (jishu);
fs.Close ();
Application.UnLock ();


}

protected void Application_BeginRequest(Object sender, EventArgs e)
{
// Application.Lock();
// Application["counter_num"]=(int)Application["counter_num"]+1;
// Application.UnLock();


}

protected void Application_EndRequest(Object sender, EventArgs e)
{

}

protected void Application_AuthenticateRequest(Object sender, EventArgs e)
{

}

protected void Application_Error(Object sender, EventArgs e)
{

}

protected void Session_End(Object sender, EventArgs e)
{
Application.Lock();
Application["user_sessions"] = (int)Application["user_sessions"] - 1;
Application.UnLock();

}

protected void Application_End(Object sender, EventArgs e)
{
Application.Lock();
Application["user_sessions"] = (int)Application["user_sessions"] - 1;
Application.UnLock();

}
可发现关闭IE后再次登录人数不是”1”,而是”2”,关闭IE后再登录又变成了”3”,也就是说”Session_End"或Application_End没有起作用?这个什么原因?
请高手指点!

...全文
86 1 打赏 收藏 举报
写回复
1 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
九章落地 2006-11-02
  • 打赏
  • 举报
回复
关闭浏览器后,Session并不是马山失效,而是有一个失效时间(timeout,默认是20分钟),可在web.config里设置。如:
<sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="5"/>

发帖
.NET社区

6.1w+

社区成员

.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
帖子事件
创建了帖子
2006-11-02 03:36
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。