Сеанс Asp.net не работает с WCF WebHttpBinding - PullRequest
1 голос
/ 29 июня 2011

Мы выполняем JSON-службу WCF REST (WebHttpBinding).Поскольку сессия чистого WCF не работает с этим типом привязки, мы используем сессию asp.net.Поэтому мы устанавливаем:

<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />

в нашем web.config и:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]

поверх нашей реализации сервиса.У нас есть несколько сервисных методов, таких как:

public void OpenSession(string userName)
public void GetSomething(int somethingId)
public void CloseSession()

Затем мы проверяем sessionId HttpContext в каждом методе.

HttpContext.Current.Session.SessionID

Проблема в том, что она всегда меняется.Если я сделаю вызов OpenSession? UserName = 'toto' в моем веб-браузере и еще один сразу после GetSomething ?thingId = 1234 , идентификатор сессии изменится.

Кажется, что wcf плохо обрабатывает куки.Если я вызываю метод OpenSession в fiddler, то в заголовках http сервис «Set-Cookie» не возвращает.

1 Ответ

1 голос
/ 29 июня 2011

Я обнаружил, что:

По умолчанию WCF не имеет cookie включен на стороне клиента. Так когда сервер требует Cookie, вам нужно включить cookie на привязку для клиента через собственность HttpTransportBindingElement.AllowCookies.

Это в этой статье. Проверьте, будет ли это полезно для вас: http://blogs.msdn.com/b/wenlong/archive/2006/01/23/516041.aspx

...