Это, вероятно, было мной :-) По умолчанию ваша служба и используемая привязка определяют, играет ли сеанс или нет.
Если вы ничего не делаете и используете wsHttpBinding, у вас будет сеанс. Если вы хотите, чтобы избежать этого, вы должны:
- переключиться на другой протокол/связывания в соответствующих случаях
- украшают свои сервисные контракты с атрибутом SessionMode
Если вы хотите, чтобы остановить службу из когда-либо с помощью сеанса, вы можете сделать это так:
[ServiceContract(Namespace="....", SessionMode=SessionMode.NotAllowed)]
interface IYourSession
{
....
}
и вы можете украсить свой класс обслуживания с соответствующими атрибутами instance context mode:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
class YourService : IYourService
{
....
}
С этим вы должны быть в значительной степени в безопасности и не получать никаких сеансов вообще.
Marc
Да, это был вы. Благодаря! –
+1 для полезной информации по умолчанию wsHttpBinding. Должен ли интерфейс читать 'интерфейс IYourService' вместо' IYourSession'? Я пытался связать два образца вместе :) Спасибо! –
Как (для wshttpbinding) отношения между SessionMode.NotAllowed и maxConcurrentSessions of serviceThrottling? Возможно, maxConcurrentSessions указывает на необходимость проверки подлинности контекста безопасности клиентских прокси и SessionMode.NotAllowed указывает на отсутствие службы без состояния. – Gerard