当前位置: 首页 > 编程语言 > C#

如何在C#应用程序中的Web服务调用之间保持会话活动?

时间:2023-04-10 16:07:04 C#

如何在c#应用程序中的Web服务调用之间保持会话活动?这很简单。我正在从c#应用程序调用Web服务(.asmx,启用会话)。我希望每次调用都使用与前一次调用相同的会话密钥(而不是每次都创建一个新的会话密钥)。这是我的(没有什么不寻常的)代码:publicstringinvokeMethod(stringmethodUrl){req.Method="GET";req.ContentLength=0;varresult=newStringBuilder();使用(HttpWebResponseres=(HttpWebResponse)req.GetResponse()){StreamReadersr=newStreamReader(res.GetResponseStream());结果.Append(sr.ReadToEnd());}返回结果.ToString();现在我想在同一个会话中再次调用它。添加:感谢Waleed的回答,我认为我应该这样做(在检索会话ID之后):",当前会话ID);cookie.Domain=我的域名;//没有这一行将无法工作!req.CookieContainer.Add(cookie);}再次感谢。如果我正确理解了这个问题,我相信您需要从响应中获取会话cookie(第一次调用Web服务)并将其添加到后续调用的请求中。编辑:使用CookieContainer是正确的方法,但请注意它默认为null,因此您必须在发出请求之前将CookieContainer对象分配给该属性(请参阅MSDN文章以获取示例代码)。至于cookie名称,ASP.NET会话cookie的默认名称是ASP.NET_SessionId,但名称可以不同,因为它可以在web.config中更改,或者它们可能没有使用ASP.NET会话(它们自己的实现例如),所以你必须检查从应用程序的域中获取的cookie(你可以使用像Fiddler这样的HTTP嗅探器,或者如果你使用的是FireFox或Chrome,检查名称和内容会更容易)你在选项中有对话框中从该域获取的cookie)。在MSDN上对将ASP.NET会话状态与Web服务结合使用进行了很好的讨论:http://msdn.microsoft.com/en-us/library/aa480509.aspx在第一次调用.NET_SessionId值的响应中查看ASP,默认情况下,这是会话ID。然后添加到下一个调用中(见下):http://support.microsoft.com/?kbid=899918以上是C#学习教程:如何保持session活跃度?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: