关于.net实现统计在线人数

来源:百度知道 编辑:UC知道 时间:2024/06/05 20:27:00
代码如下:
<script Language="c#" RunAt="server">

void Application_Start(object sender, EventArgs e)
{
Application["counter"] = 0;

}
void Session_Start(object sender, EventArgs e)
{
Application.Lock();
Application["counter"] = (int)Application["counter"] + 1;
Application.UnLock();
}
void Session_End(object sender, EventArgs e)
{
Application.Lock();
Application["counter"] = (int)Application["counter"] - 1;
Application.UnLock();
}
</script>
但调试时总是报错,“未将对象引用设置到对象的实例”,如何解决

Application_Start只在IIS服务重启(重启 【控制面板/管理工具/服务/IIS Admin】服务或者重启电脑时才执行)
而你在调试的时候,Application_Start没有执行,使得Application["counter"]没有被创建,而在Session_Start中引用Application["counter"],会提示“未将对象引用设置到对象的实例”。可以在Session_Start中检查Application["counter"]
void Session_Start(object sender, EventArgs e)
{
Application.Lock();
if(Application["counter"] ==null)
Application["counter"]=0;
Application["counter"] = (int)Application["counter"] + 1;
Application.UnLock();
}

void Application_Start(object sender, EventArgs e)
{
if(Application["counter"] ==null)
{
Application["counter"] = 0;
}

}

有的对象没用到,再仔细找找