用户登陆Session丢失,可能是因为应用程序发生错误而导致重启。这次遇到这情况是由于使用了ThreadPool.QueueUserWorkItem,
其中回调函数执行时发生未处理的异常,导致了ASP.NET 应用程序意外退出。参考:在 .NET Framework 2.0 中未处理的异常导致基于 ASP.NET 的应用程序意外退出(http://support.microsoft.com/kb/911816/zh-cn)
例子:
Code
protected void Page_Load(object sender, EventArgs e)
{
ThreadPool.QueueUserWorkItem(new WaitCallback(ThreadWork), new ThreadArg(fpath, content));
}
public static void ThreadWork(object state)
{
//如果路径不存在,CFile.Write就会抛出异常,在ThreadPool.QueueUserWorkIte 的回调函数中发生未处理异常导致了应用程序重启,Session丢失,解决办法当然有很多,最简单就是加入try catch 罗
CFile.Write(((ThreadArg)state).Path, ((ThreadArg)state).Content);
}
public class ThreadArg
{
private string path;
public string Path
{
get { return path; }
set { path = value; }
}
private string content;
public string Content
{
get { return content; }
set { content = value; }
}
public ThreadArg(string path, string content)
{
this.path = path;
this.content = content;
}
}