2011-05-06 2 views
0

У меня есть служба WCF с использованием WebHttpBinding.Throttling WCF WebHttpBinding

Я использую следующую конфигурацию:

InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Multiple

Я ограничил MaxConcurrentCalls до 20.

Что я вижу, заключается в следующем: если предел 20 достигнут, новые соединения/запросы поставлены в очередь. Как я могу добиться того, что вместо этого отправляется сообщение «занятый услугой»?

Большое спасибо

ответ

0

«услуга занят» является результатом WCF смог обработать сообщение. Я не уверен, почему вы предпочли бы неудачный запрос по сравнению с тем, который может занять немного больше времени, чтобы успешно обработать. Кроме того, WCF предоставляет параметры дросселирования услуг, но я не считаю, что вы можете напрямую настроить встроенный механизм ожидания WCF.

Даже для конфигурации Singleton (maxConcurrentCalls = "1" или InstanceContextMode.Single), как вы показали, на дросселирование влияют еще два параметра (maxConcurrentSessions и maxConcurrentInstances), а не только одновременные вызовы. This article has a good overview влияния трех параметров. Путем настройки этих и, возможно, тайм-аутов вы, возможно, вынудите условие «занято занято», если это действительно то, что вам нужно.

1

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

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