2014-04-10 8 views
0

Включение сеансов в методе веб-службы, как это:Использование веб-служб с состояния сеанса Cookieless = истинные

[WebMethod(EnableSession=true)] 
public string HelloWorld() 
{ 
    return "Hello World"; 
} 

Используйте состояние Cookieless сессии (web.config):

<sessionState cookieless="true"></sessionState> 

Тогда попытаться вызвать его от клиента, как это:

localhost.WebService1 ws1 = new localhost.WebService1(); // the web service proxy   
ws1.HelloWorld(); 

Вы получаете перенаправлять WebException (302) о том, что объект имеет пчела п поколеблется:

enter image description here

+0

Что такое базовый класс для localhost.WebService1? –

+0

SoapHttpClientProtocol (namespace'System.Web.Services.Protocols'), так как он был сгенерирован автоматически .NET. –

+0

У вас есть свойство Boolean "AllowAutoRedirect" там, пожалуйста, проверьте, является ли оно ложным по умолчанию, измените его на true и протестируйте его –

ответ

0

Изделия Microsoft описывает эту проблему: http://msdn.microsoft.com/en-us/library/aa480509.aspx

вызова от клиента должен поймать WebException и обновить URL на веб-сервис, который должен включать в себя 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» имеет значение по умолчанию ложно.

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

Изменение его истинным перед вызовом веб-метод будет автоматически обрабатывать 302 Перенаправление HTTP ответ.

+0

Это не работает и дает сообщение об ошибке (также как и в статье Microsoft, с которой я связан в своем ответе): клиент нашел тип содержимого ответа «text/html; charset = utf-8 ', , но ожидаемый' text/xml ' –