Application_Start 被多次触发

kscbetrue 2008-12-18 04:57:51
我做的一个系统,正常运行两个多小时后发现全局变量变为初始值了,Application_Start事件可能被服务器再次触发了,请问各位高手是怎么回事啊,有没有解决的办法?代码如下:
void Application_Start(object sender, EventArgs e)
{
//在应用程序启动时运行的代码
Application["DefaultSurveyId"] = 1;
Application["YulanSurveyId"] = 1;
Application["SurveyType"] = -1;
Application["SurveyState_Exp"] = -1;
Application["SurveyState_Nor"] = -1;
Application["Time_Exp"] = -1;
Application["Time_Nor"] = -1;
Application["Time_Exp_end"] = -1;
Application["Time_Nor_end"] = -1;
Application["VerifyExpert"] = new List<String>();
//ExcuteVerifies();
}

void ExcuteVerifies()
{
while (true)
{
ThreadStart ts = new ThreadStart(ClearVeryfies);
Thread t = new Thread(ts);
t.Start();
Thread.Sleep(new TimeSpan(1, 0, 0, 0));
}
}

void ClearVeryfies()
{
List<string> l = (List<string>)Application["VerifyExpert"];
foreach (string s in l)
{
if (!VeryfyString(s))
{
l.Remove(s);
}
}
Application["VerifyExpert"] = l;
}

bool VeryfyString(string s)
{
DateTime dt = DateTime.Parse(s.Substring(s.Length - 6));
if (DateTime.Now - dt < TimeSpan.FromDays(7))
return true;
else
return false;
}

void Application_End(object sender, EventArgs e)
{
//在应用程序关闭时运行的代码

}

void Application_Error(object sender, EventArgs e)
{
//在出现未处理的错误时运行的代码

}

void Session_Start(object sender, EventArgs e)
{
//在新会话启动时运行的代码

}

void Session_End(object sender, EventArgs e)
{
//在会话结束时运行的代码。
// 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
// InProc 时,才会引发 Session_End 事件。如果会话模式
//设置为 StateServer 或 SQLServer,则不会引发该事件。

}
...全文
389 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
archu 2008-12-19
  • 打赏
  • 举报
回复
这个有两个可能性:
1. Worker process被recycle了,自己看看IIS里面有没有配置了recycle。同时,你注意观察w3wp.exe的pid是否前后有变化
2. AppDomain被recycle了,这个可能性就是一些.NET的敏感文件或目录北改变了,比如有没有杀毒软件扫描web.config, App_bin目录等
Robin 2008-12-19
  • 打赏
  • 举报
回复
当第一个session建立时 就会Application_Start
当最后一个人离开了就会Application_End

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

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

试试用AI创作助手写篇文章吧