Я даже не знаю, с чего начать, в основном потому, что я даже не могу определить корень проблемы - я могу только найти симптомы.
Я просто собираюсь описать, что это происходит, подробности диагностики и то, что я уже сделал, чтобы попытаться исправить это в надежде, что кто-то сможет избавить меня от этого ада или, по крайней мере, указать мне на выход.
Происходит, когда
<form>
)Симптомы
Используя отслеживание неудачных запросов IIS, я смог уловить некоторые подсказки.
Когда файл POST успешно завершается, результаты появляются немедленно. Трассировка записывает все чтения сервером запроса, отправленного от клиента. В конце файла я получаю эту запись
GENERAL_READ_ENTITY_START
Duration
0ms
GENERAL_REQUEST_ENTITY_END
BytesReceived
7870
ErrorCode
0
ErrorCode
The operation completed successfully. (0x0)
Duration
468ms
После этой записи выполняется остальная часть процесса, последняя запись в трассировке - это сброс и конец ответа.
GENERAL_FLUSH_RESPONSE_END
BytesSent
12245
ErrorCode
0
ErrorCode
The operation completed successfully. (0x0)
GENERAL_REQUEST_END
BytesSent
12245
BytesReceived
2598298
HttpStatus
200
HttpSubStatus
0
При сбое POST файла происходит длительная задержка чтения, за которой следует прерывание ввода-вывода и потеря соединения.
Последние записи в прочитанном запросе выглядят следующим образом:
GENERAL_READ_ENTITY_START
Duration
133443 ms
GENERAL_REQUEST_ENTITY_END
BytesReceived
0
ErrorCode
2147943395
ErrorCode
The I/O operation has been aborted because of either a thread exit or an application request. (0x800703e3)
Duration
138248ms
Обратите внимание на огромное время продолжительности. Обычно END
вход 3000-4000 мс, а START
равно 0 или близко к 0.
В конце следа
GENERAL_FLUSH_RESPONSE_END
BytesSent
0
ErrorCode
2147943629
ErrorCode
An operation was attempted on a nonexistent network connection. (0x800704cd)
GENERAL_REQUEST_END
BytesSent
0
BytesReceived
7210715
HttpStatus
200
HttpSubStatus
0
Прочие симптомы
Единственный раз, когда POSTing работает для этих файлов, - это загрузка с самого сервера!
Под этим я подразумеваю переход к http://localhost
и выполнение процесса загрузки. Это работает в 100% случаев.
Исправления уже испробованы
executionTimeout
под httpRuntime
в web.config
установлено на 6 минут. ссылкаmaxRequestLength
под httpRuntime
в web.config
установлено 50 МБ.maxAllowedContentLength
в requestLimits
в web.config
установлено 50 МБ.Я на грани остроумия, может ли кто-нибудь пролить свет на это?