2012-09-02 124 views
0

我有一个片段,会话有数字内容nd它incriseve 3,但是当它收到3它发送到client.this会话必须超时1分钟,但直到会话是不超时程序正常工作,但会话过期和新会话想创建我得到system.invalidoperationexception什么是问题?????它是我的代码?旧会话超时后创建会话

string ip = HttpContext.Current.Request.UserHostAddress; 


      HttpContext failuser = HttpContext.Current; 
      failuser.Session.Timeout =1; 
      if (failuser != null) 
      { 
       if (failuser.Session[ip] != null) 
        failuser.Session[ip] = (int)failuser.Session[ip] + 1; 
       else 
        failuser.Session[ip] = 1; 

       // 
       retval = failuser.Session[ip].ToString(); 
       if ((int)failuser.Session[ip] > 2) 
       { 

        retval = "!"; 

       } 
+0

你在哪里得到这个异常?我的意思是当你调试代码时你在哪个位置得到这个异常? –

+0

感谢您的回复;这段代码是在webmethod我调用jquery ajax方法 – quantum62

+0

你有没有调试过的代码? –

回答

0

在到期后您将无法维护任何会话状态。
1分钟的会话超时非常小。把它保持在5分钟高的地方。

如果不允许您的会话超时,而不是将会话恢复到超时后的状态,将会容易得多。

由于您已经在使用WebMethods,因此您可以通过在其过期之前发回来延长会话的生命。 (一定要保持一个绝对的超时时间,比如30分钟后,如果你的用户不活动)。

+0

我不希望会话有很长的使用期限。我的问题是:当我想创建新的sesion我得到system.invalidoperationexception如果我选择地址栏和重新加载页新会话创建,但是当我在客户端使用window.location.reload()刷新我的问题不解决。 – quantum62

+0

我想知道发生了什么,我重新加载在浏览器dosenot方便存在任何问题,但是当我使用像reload或history.go(0)的方法,问题仍然存在 – quantum62