gpt4 book ai didi

c# - 如何在 c# 应用程序中两次调用 Web 服务之间保持 session 事件?

转载 作者:行者123 更新时间:2023-11-30 12:17:24 28 4
gpt4 key购买 nike

这很简单。
我正在从 c# 应用程序调用 Web 服务(.asmx,启用 session )。

我希望每次调用都使用与前一次调用相同的 session key (而不是每次都创建一个新的 session key )。

这是我的(没什么特别的)代码:

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();
}

现在我想在同一个 session 中再次调用它。

添加:感谢Waleed 的回答,我想我应该(在检索 session ID 后)做如下事情:
再次添加:这是完成的方式:

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);
}

再次感谢。

最佳答案

如果我对问题的理解正确,我相信您需要从响应中获取 session cookie(在您第一次调用网络服务时)并将其添加到后续调用中的请求中。

编辑:

使用 CookieContainer 是正确的方法,但请注意它是 null by default因此您必须在发出请求之前将 CookieContainer 对象分配给该属性(请参阅 MSDN 文章中的示例代码)。

关于 cookie 名称,ASP.NET session cookie 的默认名称是 ASP.NET_SessionId,但名称可以不同,因为它可以在 web.config 中更改,或者它们可能没有使用 ASP.NET session (例如他们自己的实现),因此您必须检查从该应用程序的域中获取的 cookie(您可以使用像 Fiddler 这样的 HTTP 嗅探器,或者如果您使用的是 FireFox 或 Chrome,则更容易,您可以检查您在选项对话框中从该域获得的 cookie 的名称和内容)。

关于c# - 如何在 c# 应用程序中两次调用 Web 服务之间保持 session 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3862638/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com