Проблема с WCF InstanceContextMode.PerSession

Я пытаюсь справиться с созданием экземпляров WCF, и у меня возникают проблемы с сеансами. Либо мое предположение о том, как это работает, неверно, либо я что-то упускаю.

В моем сервисном контракте (реализация, а не интерфейс) я установил для InstanceContextMode поведения сервиса значение PerSession. У меня есть частная строка в службе под названием «слово», которая представляет собой просто пустую строку и 2 метода: 1 для установки переменной слова в указанное значение и 1 для ее извлечения.

Я добавил ссылку на службу в приложение MVC, а затем выполнил следующие вызовы:

  • ПолучитьСлово()
  • SetWord("тест")
  • ПолучитьСлово()

Первый вызов возвращает пустую строку, как я и ожидал. SetWord обновляет приватную переменную и перенастраивает это значение, как я и ожидал. Однако второй вызов GetWord() возвращает пустую строку, я ожидал, что он вернет «тест».

Если я изменю InstanceContextMode на «Single», я получу «тест» от конечного вызова GetWord (как и следовало ожидать), но я не понимаю, почему я не получу то же самое от PerSession.

Может ли кто-нибудь помочь мне понять, где я ошибаюсь?


person Steviebob    schedule 26.12.2013    source источник
comment
Я думаю, было бы полезно, если бы вы показали свой тестовый код... Я предполагаю, что вы создаете новый экземпляр для каждого вызова для каждого из ваших 3 тестов... это будет 3 сеанса.   -  person T McKeown    schedule 26.12.2013
comment
Просто предположение: базовая привязка Http не поддерживает сеансы и по умолчанию возвращается к PerCall. Прочитайте это: stackoverflow.com/questions/12578409/   -  person ErnieL    schedule 26.12.2013
comment
Спасибо за ответы. ErnieL, вы были правы, я использовал базовую привязку http, как только я изменил ее на WsHttpBinding, она сработала..... черт :) Напишите правильный ответ (а не комментарий), и я с радостью отмечу его как правильный ответ.   -  person Steviebob    schedule 26.12.2013