Задержка происходит из-за того, что IIS пытается прочитать поток запроса от клиента для получения значений формы.Этот поток зависит от клиентского соединения и в некоторых случаях даже не возвращается.Я видел случаи, когда Request.Form блокировался более 5 минут, и это приводило к тому, что IIS в конечном итоге создавало исключение ThreadAbortException.
В нашем случае у нас был HttpModule, который должен был прочитать значения Request.Form (или request ["key"], который также выполняет итерации по значениям формы), и он будет случайным образом блокироваться на сервере и никогда не будетвернуть.Я использовал этот HttpModule для отслеживания производительности приложений на стороне сервера, что дало мне понять, что все, что я отслеживаю с помощью этого модуля, также будет зависеть от подключения клиента, что исказит мои результаты выполнения на стороне сервера.
Чтобы решить эту проблемувопрос, вы можете установить обратный HTTP-прокси перед вашим приложением.Обратный прокси снимает с себя ответственность за чтение потока клиента (и блокирует дорогой поток в вашем приложении) и отправляет полный запрос на ваш сервер.Это уменьшит нагрузку на ваше приложение, потому что вы можете сохранить свои драгоценные потоки приложений для работы с основной рабочей нагрузкой, а не блокировать их для чтения из клиентских потоков.
Кроме того, вы можете выгружать HTTP, балансировать нагрузку и даже кэшировать статический контент на вашем обратном прокси (в зависимости от того, какой вы используете).