2010-05-19 2 views
2

У меня есть приложение ASP.Net, работающее под IIS 6. На простой странице есть два переключателя и кнопка отправки. Если я выберу радиокнопку «А» и отправлю страницу, будет создан длинный PDF-файл, который займет около минуты. Если я выбираю радиокнопку «B», генерируется небольшой PDF-файл. (В обоих случаях PDF выписывается в объект Response, и он открывается в моем браузере.)Основной вопрос о очередях запросов в IIS/ASP.Net

Если я выбираю радиокнопку «A» и отправляю, а затем краю X в браузере, чтобы остановить текущий запрос, затем выберите радиокнопку «B» и повторите отправку, эта страница все еще занимает много времени для обработки моего запроса.

Несомненно, мой первый запрос все еще обрабатывается на сервере, но мне было интересно, как IIS и/или ASP.Net ставят в очередь мои запросы, чтобы обеспечить справедливое использование серверов среди всех пользователей. Правильно ли я предполагаю, что такое происходит, и если да, то как это делается?

+1

Может ли быть что-то еще, что блокирует? Как блокировка таблицы SQL? Попробуйте следующее: вместо создания pdf используйте следующие действия: a и b System.Threading.Thread.Sleep (2000); System.Threading.Thread.Sleep (100); Второй запрос по-прежнему занимает больше времени после первого удара? –

ответ

1

Возможно, вы столкнулись с блокировкой сеанса. Попробуйте запустить эксперимент в нескольких браузерах, т. Е. Вместо остановки браузера и повторной отправки, запустите оба запроса в отдельных браузерах (например, Firefox и Chrome), которые будут использовать отдельный сеанс и, следовательно, не будут блокироваться.

Concurrent Requests and Session State для обоснования и обходных решений.

+0

Спасибо за статью. Теперь имеет смысл. – larryq