2014-04-10 50 views
0

啓用會話:用法=在這樣的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)說對象有蜜蜂n來移動:

enter image description here

+0

localhost.WebService1的基類是什麼? –

+0

SoapHttpClientProtocol(namespace'System.Web.Services.Protocols),因爲它已經由.NET自動生成。 –

+0

你的布爾屬性爲「AllowAutoRedirect」,請檢查它是否爲默認值,將其更改爲true並對其進行測試 –

回答

0

微軟的文章描述了這一問題:http://msdn.microsoft.com/en-us/library/aa480509.aspx

從客戶呼叫已趕上引發WebException,並更新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(); 
    } 
} 
0

檢查SoapHttpClientProtocol的文檔屬性「AllowAutoRedirect」有假的默認值。調用Web方法會自動處理302 HTTP重定向響應前

http://msdn.microsoft.com/en-us/library/system.web.services.protocols.httpwebclientprotocol.allowautoredirect%28v=vs.110%29.aspx

它更改爲true。

+0

這不起作用,並給出了一個錯誤(正如我在我的回答中鏈接到的微軟文章中):客戶端發現響應內容類型爲'text/html; charset = utf-8', 但預計'text/xml' –