SessionMode.NotAllowed против maxConcurrentSessions для wshttpbinding - PullRequest
0 голосов
/ 21 июля 2011

Атрибут службы SessionMode.NotAllowed и maxConcurrentSessions serviceThrottling может использоваться одновременно с wshttpbinding.

Значит ли это, что они, возможно, относятся к двум различным концепциям сессии?

например. SessionMode.NotAllowed = служба без сохранения состояния.
maxConcurrentSessions = макс. одновременные (разные?) переговоры по безопасности.

EDIT:
Из этого ответа на другой вопрос Я понял, что "WCF проверит соответствие app.config [maxConcurrentSessions] атрибутам [SessionMode.NotAllowed] и откажется запускать службу, если они не согласованы".
Когда объявляется SessionMode.NotAllowed и это запрещает использование сеансов, не должен ли WCF затем отказаться от запуска службы из-за противоречивой конфигурации с maxConcurrentSessions?

1 Ответ

1 голос
/ 21 июля 2011

SessionMode.NoAllowed говорит, что контракт должен быть реализован без сохранения состояния

Для NetTcp это помешало бы запуску службы в качестве сессионной по своей сути, для WSHttpBinding она подавит сеанс

maxConcurrentSessions не будет иметь эффекта, если вы используете SessionMode.NotAllowed, так как не будет сессий для регулирования

WSHttpBinding использует SecureConversation для поддержки своей концепции сеанса, если она доступна. Если он недоступен, он будет использовать надежные сообщения, если он доступен. Если ни один из них не доступен, он не может поддерживать сеанс

Я написал статью в блоге об этом материале некоторое время назад

Обновление в ответ на редактирование

Безопасный разговор и сеансы - это не одно и то же. Безопасный разговор можно использовать независимо от того, проводите ли вы сеансы или нет. Одним из способов, которым WSHttpBinding поддерживает сеанс, является использование согласования безопасного диалога для определения сеанса. Однако, если вы скажете SessionMode.NotAllowed, то WCF просто не будет иметь sessionID и не будет поддерживать сеанс - это не значит, что он не будет использовать безопасный разговор

maxConcurrentSessions ограничивает максимальное количество одновременных сеансов. Если вы выключите сессию, то количество сессий будет равно 0, и поэтому всегда будет меньше максимального значения

...