我正在使用需要从.NET(Visual Studio 2010)进行身份验证的Web服务。根据文档,您首先从第一个Web服务请求会话标识符。我可以做到这一点。然后,您应该调用第二个Web服务来实际执行查询,并在cookie中传递会话标识符。这是我的示例代码:

AuthenticateService authenticate_service = new AuthenticateService();
string session_identifier = authenticate_service.Authenticate();

SearchService search_service = new SearchService();
search_service.CookieContainer = new CookieContainer();
Cookie cookie = new Cookie("Cookie", "SID=" + session_identifier, null, search_service.Url);
search_service.CookieContainer.Add(cookie);

search_service.Test();


但是,我在最后一行收到以下异常:

未处理System.Web.Services.Protocols.SoapException
Message = Session ID cookie值不能为null或为空字符串-要求高级Web服务客户端程序参与服务器初始化的会话。

有人知道如何正确地将带有会话ID的cookie发送到Web服务吗?

最佳答案

只是想通了...

所有这些都与domain构造函数的Cookie参数有关。我通过search_service.Url是因为我不确定它应该是什么。显然应该是"search.google.com"之类的东西。当我将其传递给构造函数时,一切都按预期开始工作。

关于c# - 在.NET中,如何为需要身份验证的Web服务提供 session 标识符?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3962825/

10-14 06:56
查看更多