sessionstate 的timeout),其主要原因有三种。
一:有些杀病毒软件会去扫描您的web.config文件,那时session肯定掉,这是微软的说法。
二:程序内部里有让session掉失的代码,及服务器内存不足产生的。
三:程序有框架页面和跨域情况。
第一种解决办法是:使杀病毒软件屏蔽扫描web.config文件(程序运行时自己也不要去编辑它)
第二种是检查代码有无session.abandon()之类的。
第三种是在window服务中将asp.net state service 启动。
http://community.csdn.net/expert/topic/3100/3100218.xml?temp=.4426386
还有可能就是你在测试期间改动了,网站的文件。
我测试过没有问题!测试程序如下:
protected void application_start(object sender, eventargs e)
??{
???sqlconnection con = new sqlconnection("server=localhost;database=yourdatabase;uid=sa;pwd=;");
???sqlcommand cmd = new sqlcommand(string.format("insert into table1 (c) values({0})","application_start"+datetime.now.tolongtimestring()+"application id"+application.tostring()),con);
???con.open();
???cmd.executenonquery();
???con.close();
??}
?
??protected void session_start(object sender, eventargs e)
??{
???sqlconnection con = new sqlconnection("server=localhost;database=yourdatabase;uid=sa;pwd=;");
???sqlcommand cmd = new sqlcommand(string.format("insert into table1 (c) values({0})","session_start"+datetime.now.tolongtimestring()+"sessionid="+session.sessionid),con);
???con.open();
???cmd.executenonquery();
???con.close();
??}
??protected void application_beginrequest(object sender, eventargs e)
??{
???sqlconnection con = new sqlconnection("server=localhost;database=yourdatabase;uid=sa;pwd=;");
???sqlcommand cmd = new sqlcommand(string.format("insert into table1 (c) values({0})","application_beginrequest"+datetime.now.tolongtimestring()),con);
???con.open();
???cmd.executenonquery();
???con.close();
??}
??protected void application_endrequest(object sender, eventargs e)
??{
???sqlconnection con = new sqlconnection("server=localhost;database=yourdatabase;uid=sa;pwd=;");
???sqlcommand cmd = new sqlcommand(string.format("insert into table1 (c) values({0})","application_endrequest"+datetime.now.tolongtimestring()),con);
???con.open();
???cmd.executenonquery();
???con.close();
??}
??protected void application_authenticaterequest(object sender, eventargs e)
??{
??}
??protected void application_error(object sender, eventargs e)
??{
??}
??protected void session_end(object sender, eventargs e)
??{
???sqlconnection con = new sqlconnection("server=localhost;database=yourdatabase;uid=sa;pwd=;");
???sqlcommand cmd = new sqlcommand(string.format("insert into table1 (c) values({0})","session_end"+datetime.now.tolongtimestring()+"sessionid="+session.sessionid),con);
???con.open();
???cmd.executenonquery();
???con.close();
??}
??protected void application_end(object sender, eventargs e)
??{
???sqlconnection con = new sqlconnection("server=localhost;database=yourdatabase;uid=sa;pwd=;");
???sqlcommand cmd = new sqlcommand(string.format("insert into table1 (c) values({0})","application_end"+datetime.now.tolongtimestring()),con);
???con.open();
???cmd.executenonquery();
???con.close();
??}
所有的代码都是global里面的
