代码之家  ›  专栏  ›  技术社区  ›  Oren A

如何在c应用程序中的两个web服务调用之间保持会话活动?

  •  4
  • Oren A  · 技术社区  · 14 年前

    这是相当直接的。

    我希望每次调用都使用与上一次相同的会话密钥(而不是每次创建新的会话密钥)。

    public string invokeMethod(string methodUrl)
    {
     HttpWebRequest req = (HttpWebRequest)WebRequest.Create(methodUrl);
     req.Method = "GET";
     req.ContentLength = 0;
     var result = new StringBuilder();
     using (HttpWebResponse res = (HttpWebResponse)req.GetResponse())
     {
       StreamReader sr = new StreamReader(res.GetResponseStream());
       result.Append(sr.ReadToEnd());
     }
     return result.ToString();
    }  
    

    补充: 多亏了 瓦利德
    再次添加: 就是这样做的:

    if (!string.IsNullOrEmpty(currentSessionID))
    {
      Cookie cookie = new Cookie("ASP.NET_SessionId", currentSessionID);
      cookie.Domain=myDomain;  //Will not work without this line!
      req.CookieContainer.Add(cookie);  
    }
    

    再次感谢。

    3 回复  |  直到 14 年前
        1
  •  1
  •   Waleed Eissa    14 年前

    如果我正确地理解了这个问题,我相信您需要从响应中获取会话cookie(第一次调用web服务时),并在随后的调用中将其添加到请求中。

    编辑:

    使用CookieContainer是正确的方法,但请注意 null by default

        2
  •  1
  •   Dave R.    14 年前

    关于使用ASP.NET与MSDN上的web服务的会话状态如下:

    http://msdn.microsoft.com/en-us/library/aa480509.aspx

        3
  •  1
  •   Xaqron    14 年前

    从第一个电话开始,照顾好 ASP.NET_SessionId

    然后将其添加到下一个呼叫(请参见下文):

    http://support.microsoft.com/?kbid=899918