在Web服务方法中启用会话,如下所示:
[WebMethod(EnableSession=true)]
public string HelloWorld()
{
return "Hello World";
}
使用无Cookie会话状态(web.config):
<sessionState cookieless="true"></sessionState>
然后尝试从这样的客户端调用它:
localhost.WebService1 ws1 = new localhost.WebService1(); // the web service proxy
ws1.HelloWorld();
您得到一个重定向WebException(302),表示该对象已被移动:
答案 0 :(得分:0)
Microsoft文章介绍了此问题:http://msdn.microsoft.com/en-us/library/aa480509.aspx
来自客户端的调用必须捕获WebException,并更新Web服务的URL,该服务必须包含Web服务器生成的sessionId。然后重复调用方法:
localhost.WebService1 ws1 = new localhost.WebService1(); // the web service proxy
try {
ws1.HelloWorld();
} catch (WebException ex) {
HttpWebResponse response = (HttpWebResponse)ex.Response;
if (response.StatusCode == HttpStatusCode.Found) {
ws1.Url = new Uri(new Uri(ws1.Url), response.Headers["Location"]).AbsoluteUri;
ws1.HelloWorld();
}
}
答案 1 :(得分:0)
检查SoapHttpClientProtocol的文档,属性“AllowAutoRedirect”的默认值为false。
在调用Web方法之前将其更改为true将自动处理302 http重定向响应。