我正在使用需要从.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/