2009-09-09 3 views
1

В одном previous thread один из респондентов сказал, что использование wsHttpBinding использовало сеанс. Так как я работаю в кластерной среде IIS, должен ли я отключить это? Насколько мне известно, сеансы не работают в кластере.Связывание WCF -wsHttpBinding использует сеанс?

Если мне нужно отключить это, как мне это сделать?

ответ

5

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

Если вы ничего не делаете и используете wsHttpBinding, у вас будет сеанс. Если вы хотите, чтобы избежать этого, вы должны:

  • переключиться на другой протокол/связывания в соответствующих случаях
  • украшают свои сервисные контракты с атрибутом SessionMode

Если вы хотите, чтобы остановить службу из когда-либо с помощью сеанса, вы можете сделать это так:

[ServiceContract(Namespace="....", SessionMode=SessionMode.NotAllowed)] 
interface IYourSession 
{ 
.... 
} 

и вы можете украсить свой класс обслуживания с соответствующими атрибутами instance context mode:

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)] 
class YourService : IYourService 
{ 
    .... 
} 

С этим вы должны быть в значительной степени в безопасности и не получать никаких сеансов вообще.

Marc

+0

Да, это был вы. Благодаря! –

+2

+1 для полезной информации по умолчанию wsHttpBinding. Должен ли интерфейс читать 'интерфейс IYourService' вместо' IYourSession'? Я пытался связать два образца вместе :) Спасибо! –

+0

Как (для wshttpbinding) отношения между SessionMode.NotAllowed и maxConcurrentSessions of serviceThrottling? Возможно, maxConcurrentSessions указывает на необходимость проверки подлинности контекста безопасности клиентских прокси и SessionMode.NotAllowed указывает на отсутствие службы без состояния. – Gerard

Смежные вопросы