2014-09-06 4 views
0

Я ищу механизм для ограничения количества одновременных подключений к службе, открытой с помощью ASP.NET WebAPI.Как ограничить максимальное количество одновременных подключений/запросов/сеансов в ASP.NET WebAPI

Почему? Поскольку эта служба выполняет операции, которые стоят дорого на аппаратных ресурсах, и я хотел бы предотвратить деградацию под стрессом.

Подробнее:

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

Я ищу что-то из коробки (что-то, как простой, как настройка конфигурации IIS) но я не мог найти то, что мне нужно.

Любые подсказки?

Спасибо!

+0

Чтобы сузить возможные ответы (и избежать проблемы [XY] (http://meta.stackexchange.com/q/66377/67392)): почему? – Richard

+0

Обновлен вопрос. – mo5470

ответ

1

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

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

Предлагаю начать с ThrottlingHandler от WebApiContrib Возможно, вы сможете удовлетворить свои потребности, правильно применяя метод GetUserIdentifier.

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