Принуждение веб-службы asmx обрабатывать запросы по одному за раз

StackOverflow https://stackoverflow.com/questions/810505

  •  03-07-2019
  •  | 
  •  

Вопрос

Я отлаживаю веб-службу ASMX, которая получает "пакеты" запросов.т.е. вполне вероятно, что веб-служба получит 100 асинхронных запросов примерно за 1 или 2 секунды.Кажется, что обработка каждого запроса занимает около секунды (это ожидаемо, и меня устраивает такая производительность).Однако важно то, что каждый запрос обрабатывается последовательно и никакой параллельной обработки не происходит.Я не хочу никакой параллельной обработки запросов из-за внешних компонентов, вызываемых веб-службой.Есть ли какой-нибудь способ заставить веб-службу обрабатывать каждый ответ только последовательно?

Я видел атрибут maxconnection в machine.config, но, похоже, это работает только для исходящих подключений, где, поскольку я хочу ограничить входящие подключения.

Пожалуйста, обратите внимание, что рефакторинг в WCF на данный момент невозможен.

Мы используем IIS6 на Win2003.

Это было полезно?

Решение

Возможно, вам следует распределять запросы по очереди внутри компании и обрабатывать их один за другим?

Это может привести к тому, что клиенты будут запрашивать результаты (если они им вообще нужны), но вы получите желаемый последовательный конвейер...

Другие советы

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

То, что я делал в прошлом, - это просто накладывал блокировку на любой доступ к внешнему ресурсу, который я использовал.В моем случае это был фрагмент неуправляемого кода, который утверждал, что является потокобезопасным, но который на самом деле уничтожил бы кучу библиотеки времени выполнения C, если бы к нему обращались из более чем одного потока одновременно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top