Время жизни / состояние переменной WCF - PullRequest
1 голос
/ 26 октября 2008

Я размещаю свой первый сервис WCF в IIS. У меня есть два метода: один - установить строковую переменную в службе WCF, а другой - получить ее. Используемый интерфейс:

[OperationContract]
string ReturnText();

[OperationContract]
void SetText(string s);

Используется BasicHttpBinding. Прохождение службы с помощью отладчика от клиента показывает, что значение строки установлено правильно с использованием SetText, но когда я немедленно делаю текст возврата, строка возвращается к нулю.

Возможно, я знаю простой, но я подумал, что все значения в службе WCF были сохранены между открытием соединения службы и его закрытием.

Почему значение теряется между Set и Gets?

Ответы [ 3 ]

7 голосов
/ 26 октября 2008

По умолчанию все без сеанса и экземпляры для каждого вызова. См

http://msdn.microsoft.com/en-us/library/ms731193.aspx

для некоторой начальной информации, но для того, чтобы иметь состояние между вызовами, вам понадобится либо режим PerSession или Single instanceging на сервере, а в первом случае настройте привязку для поддержки сеансов (так, чтобы два вызовы могут коррелироваться в результате того, что они являются частью одного и того же сеансового соединения).

4 голосов
/ 28 октября 2008

Спасибо, Брайан, эта ссылка содержит информацию, которая мне нужна. Я добавил

[ServiceContract (SessionMode = SessionMode.Required)] * ​​1003 *

к моему интерфейсу / контракту, и теперь он работает автоматически!

2 голосов
/ 18 апреля 2012

Для изменчивых значений вы также можете просто сохранить значение в статической переменной. Это также будет поддерживать его состояние при вызовах, если хост wcf не перезапущен / перезапущен

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...