IIS не обслуживает запросы других пользователей, почему один пользователь вызывает веб-сервис - PullRequest
1 голос
/ 10 мая 2011

Добрый день!

У меня есть приложение, в котором задействован сторонний веб-сервис SOAP. Вызов веб-сервиса не очень быстрый (обычно 1-3 секунды). Я заметил, что во время этих звонков все приложение «заблокировано» - IIS не обслуживает запросы других пользователей.

Я знаю, что можно вызвать веб-сервис в другом потоке или асинхронно, но это кажется излишним вызовом на 2-3 секунды. Может быть, есть какая-то конфигурация IIS для решения этой проблемы?

Я использую IIS 6.0 на Windows Server 2003. Приложение основано на ASP.NET MVC 2.

Спасибо!

Ответы [ 2 ]

4 голосов
/ 10 мая 2011

Проще говоря: у вас есть приложение ASP.NET MVC 2, вызывающее внешний веб-сервис SOAP. У вас есть один пользователь (сеанс), вызывающий какое-то действие контроллера, которое само вызывает службу. Во время этого вызова другой пользователь (другой сеанс) вызывает то же действие, и вы говорите, что он должен дождаться завершения первого запроса. Это немного странно и маловероятно.

Поведение, которое вы описываете, может произойти, если вы используете сеансы и у вас есть два одновременных запроса (из одного сеанса HTTP). Поскольку сеанс не является потокобезопасным, ASP.NET (и это не является ограничением MVC, как это всегда было) будет помещать в очередь все запросы из того же сеанса, которые пишут в него. Вот сообщение в блоге , которое иллюстрирует это (в разделе Ограничения сеанса )

0 голосов
/ 10 мая 2011

IIS автоматически обрабатывает отдельные входящие веб-запросы.

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

Что делает ваше приложение? Может быть, предоставить код?

...