примерно через минуту, и половина
Там ваша проблема. Это веб-приложение? Полторы минуты - очень долгое время для веб-приложения для ответа на запрос. Достаточно долго, чтобы на самом деле не стоило заниматься различными обманами, чтобы сделать это своего рода работа.
Вы хотите разгрузить этот процесс, чтобы быть более асинхронным с самим веб-приложением. Характер веб-приложений заключается в том, что они должны получать запрос и своевременно реагировать. То, что у вас здесь, - это долговременный процесс, который не может своевременно реагировать. Веб-приложение может облегчать взаимодействие с данными, но не должно непосредственно обрабатывать его обработку непосредственно в запросе/ответе.
Как веб-приложение взаимодействует с процессом? Запускает ли он это или предоставляет информацию для начала процесса? Я бы рекомендовал, чтобы сам процесс обрабатывался чем-то вроде службы Windows или, возможно, консольного приложения. Чем более деактивировано веб-приложение, тем лучше. Теперь, поскольку я ничего не знаю о самом процессе, я делаю несколько предположений о его поведении ...
Веб-приложение может получить запрос на запуск процесса вместе с любой информацией, необходимой для обработать. Он может хранить это в базе данных со значением состояния (ожидающим, поставленным в очередь и т. Д.), А затем отвечать пользователю (своевременно), что запрос был получен, и процесс был поставлен в очередь. Веб-приложение может иметь страницу, которая проверяет статус, чтобы пользователь мог видеть, как работает этот процесс (если он запущен, сколько записей прошло, и т. Д.).
В автономном приложении (Windows Service и др.) Будет просто отслеживаться эта база данных для данных, которые будут обрабатываться в новой очереди. Когда он видит это, он обновляет статус (запуск, обработка и т. Д.) И предоставляет любую соответствующую обратную связь во время процесса (количество обработанных записей и т. Д.) Путем обновления этих данных. Таким образом, автономное приложение и веб-приложение взаимодействуют с одними и теми же данными, но не таким образом, который блокирует поток веб-приложения и предотвращает ответ пользователю.
Когда процесс завершен, статус снова обновляется. Веб-приложение может показать, что оно закончено и предоставить ссылку для загрузки результатов.В автономном режиме даже возможно отправить электронное письмо пользователю, когда это будет сделано, или, возможно, веб-приложение может иметь какую-то систему уведомлений (я представляю маленькие значки уведомлений в Facebook), которые предупреждают пользователя о новой активности.
Таким образом, поток не блокируется, пользователь может продолжать взаимодействовать с приложением (если есть что-то, с чем можно взаимодействовать) и т. Д. И вы получаете другие дополнительные преимущества. Например, результаты процесса сохраняются в базе данных и автоматически исторически отслеживаются.
, какая версия Windows Server (IIS) использует живой сервер? –
Я считаю, что это 7.5. – Rivka
У меня была такая же проблема, и это случилось через менее чем одну секунду. Как и в вашем случае, он появился только на определенном сервере. Оказалось, что это произошло только до тех пор, пока у нас были каналы ('|') в URL-адресе запроса GET. При удалении или кодировании труб проблема больше не отображается. – chiccodoro