Мы выполняем 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» не возвращает.