在本机上测试没有问题。一切都正常,放在服务器上,就不行了,当刷新了页面后,session的值被重置,我在服务器上断点调试过,在点击按钮后重新加载了global.asax,使得session的值为默认值了,我是在做新浪微博授权登录时产生这个问题,代码如下
    protected void Page_Load(object sender, EventArgs e)
    {        if (Request["oauth_verifier"] != null)
        {
            httpRequest.Token = Session["oauth_token"].ToString();
            httpRequest.TokenSecret = Session["oauth_token_secret"].ToString();
            httpRequest.Verifier = Request["oauth_verifier"];
            httpRequest.GetAccessToken();
            Session["oauth_token"] = httpRequest.Token;
            Session["oauth_token_secret"] = httpRequest.TokenSecret;
            Session["oauth_user_id"] = httpRequest.userid;
            verify_credentials();
        }        httpRequest.GetRequestToken();
        string url = httpRequest.GetAuthorizationUrl();
        Session["oauth_token"] = httpRequest.Token;
        Session["oauth_token_secret"] = httpRequest.TokenSecret;
        Response.Redirect(url + "&oauth_callback=" + Request.Url);
    }
当跳到授权页后执行:
        httpRequest.GetRequestToken();
        string url = httpRequest.GetAuthorizationUrl();
        Session["oauth_token"] = httpRequest.Token;
        Session["oauth_token_secret"] = httpRequest.TokenSecret;
        Response.Redirect(url + "&oauth_callback=" + Request.Url);这时候,session有被赋值,当填写了 新浪微博用户名密码后,点击“确定”后应该是执行到
        if (Request["oauth_verifier"] != null)
        {
            httpRequest.Token = Session["oauth_token"].ToString();
            httpRequest.TokenSecret = Session["oauth_token_secret"].ToString();
            httpRequest.Verifier = Request["oauth_verifier"];
            httpRequest.GetAccessToken();
            Session["oauth_token"] = httpRequest.Token;
            Session["oauth_token_secret"] = httpRequest.TokenSecret;
            Session["oauth_user_id"] = httpRequest.userid;
            verify_credentials();
        }但是在这之前,我断点到global.asax中 Session_Start,重新加载了一次,再执行代码。这样session就被重置了,
是什么原因呀,请高手指点,我放在本机调机没有一点问题呀

解决方案 »

  1.   

    global.asax 这不是定时器是什么??
    Session["oauth_token"] = httpRequest.Token;
       Session["oauth_token_secret"] = httpRequest.TokenSecret;这个地方或许你写错了  返回成功之后 应该是下面这个代码             oAuthSina oauth = new oAuthSina();
                 if (Request["oauth_verifier"] != null)
                 {
                     oauth.token = Session["oauth_token"].ToString();
                     oauth.tokenSecret = Session["oauth_token_secret"].ToString();
                     oauth.Verifier = Request["oauth_verifier"].ToString();
                     oauth.AccessTokenGet();
                     Session["oauth_token"] = oauth.token;                 Session["oauth_token_secret"] = oauth.tokenSecret;             }
                 if (Session["oauth_token"] != null)
                 {                 var xml = oauth.oAuthWebRequest(oAuthSina.Method.GET,"http://api.t.sina.com.cn/account/verify_credentials.xml?source=" +
                                                     oauth.tokenSecret, String.Empty);
                     XmlDocument xmlDoc = new XmlDocument();
                     xmlDoc.LoadXml(xml);
    }
      

  2.   

    是服务器上的session服务没有起来吧,你做一个简单的页面测试下session试试
      

  3.   

    session服务没有起来的症状是怎么样的,求。
      

  4.   

    SESSION 周期是一个会话状态。
      

  5.   

    先排除是否为服务器问题吧,用个简单页面测试一下,看看session是否保持纪录,不是服务器问题再来分析代码