WCF: служба, которая позволяет только одному клиенту и отклоняет других - PullRequest
4 голосов
/ 28 апреля 2009

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

Я пробовал:

 [ServiceBehavior(IncludeExceptionDetailInFaults=true,
                  InstanceContextMode=InstanceContextMode.Single,
                  ConcurrencyMode=ConcurrencyMode.Single)]

но если я запрашиваю службу несколько раз (используя несколько потоков) на клиенте, я получаю исключение тайм-аута для 3-го запроса, но служба фактически выполняет обработку 3-го запроса!

1 Ответ

8 голосов
/ 28 апреля 2009

Вы также можете проверить поведение «ServiceThrottling», которое позволяет вам указать на стороне сервера, сколько одновременных экземпляров, одновременных вызовов и одновременных сеансов вы хотите поддерживать - установите их все на 1, и вы должны иметь свое поведение .

<behaviors>
  <serviceBehaviors>
     <behavior name="Throttled">
         <serviceThrottling maxConcurrentCalls="1"
            maxConcurrentSessions="1"
            maxConcurrentInstances="1" />
     </behavior>
  </serviceBehaviors>
</behaviors>

Марк

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