Службы WCF по умолчанию не имеют состояния? - PullRequest
9 голосов
/ 19 мая 2011

У меня есть простой сервис WCF, который позволяет клиентским / потребительским приложениям входить в систему, предоставляя имя пользователя и пароль. Если и имя пользователя, и пароль верны, служба WCF предоставляет клиенту GUID. GUID и имя пользователя затем сохраняются в виде пары ключ / значение в службе WCF. С этого момента клиент отправляет свой GUID с каждым запросом в качестве средства идентификации.

Поскольку я храню пару ключ / значение в словаре / хэш-карте, этот подход будет работать только в том случае, если служба WCF имеет состояние. Вопрос в том, являются ли они с состоянием по умолчанию или я должен что-то сделать, чтобы заставить их вести себя таким образом?

Ответы [ 2 ]

9 голосов
/ 19 мая 2011

Службы на основе вызова - это режим создания по умолчанию Windows Communication Foundation. Таким образом, по умолчанию службы WCF не поддерживают состояние. Как заявил Марк, существуют потенциальные проблемы с сохранением состояния в службах WCF. Я настоятельно рекомендую прислушаться к его совету.

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

Глава 4 превосходных услуг WCF по программированию Ювала Лоуи ( ссылка ) более детально описана.

4 голосов
/ 19 мая 2011

По умолчанию они не сохраняют состояние, и я бы настоятельно рекомендовал сохранить его, если это возможно.Однако если по какой-либо причине вы не можете, вы можете включить состояние.

Вы должны использовать wsHttpBinding или wsDualHttpBinding, а затем установить SessionMode для ServiceContract ( MSDN link ) в разрешенное или обязательное,углубляется в детали.

...