Я использую IIS версии 8.5 на Windows Server 2012 R2. Сайт представляет собой API, обрабатывающий запросы по HTTPS (TLS 1.2). Одна из конечных точек принимает сериализованные данные JSON через PUT (команда / глагол). Данные могут быть успешно переданы до определенного размера, который составляет около 8 МБ. Для наборов данных больше этого, клиент получает странную ошибку HTTP: 400 - Missing Content
. Я включил правило трассировки на сервере IIS для ошибки 400, и в какой момент в трассировке видно, что ответ 400 - Missing Content
отправляется обратно. Однако я не могу понять, что может пойти не так в событиях, предшествовавших этому. Все, что я могу заметить, это то, что данные читаются кусками 16299 bytes
в течение нескольких раундов. И тогда внезапно число прочитанных байтов становится меньше (12506 bytes
), и мы получаем следующую последовательность событий:
1288. NOTIFY_MODULE_COMPLETION ModuleName="ManagedPipelineHandler", Notification="EXECUTE_REQUEST_HANDLER", fIsPostNotificationEvent="false", CompletionBytes="12506", ErrorCode="The operation completed successfully.
(0x0)" 07:20:18.730
1289. AspNetPipelineEnter Data1="System.Web.ImplicitAsyncPreloadModule" 07:20:18.730
1290. AspNetPipelineLeave Data1="System.Web.ImplicitAsyncPreloadModule" 07:20:18.730
1291. AspNetHttpHandlerEnter 07:20:18.730
1292. GENERAL_SET_RESPONSE_HEADER HeaderName="Content-Length", HeaderValue="30", Replace="false" 07:20:19.043
1293. GENERAL_SET_RESPONSE_HEADER HeaderName="Cache-Control", HeaderValue="private", Replace="true" 07:20:19.043
1294. GENERAL_SET_RESPONSE_HEADER HeaderName="X-AspNet-Version", HeaderValue="4.0.30319", Replace="true" 07:20:19.043
1295. MODULE_SET_RESPONSE_ERROR_STATUS
Warning ModuleName="ManagedPipelineHandler", Notification="EXECUTE_REQUEST_HANDLER", HttpStatus="400", HttpReason="missing content", HttpSubStatus="0", ErrorCode="The operation completed successfully.
(0x0)", ConfigExceptionInfo=""
Я также включил подробный ответ об ошибках от IIS к клиенту, но возвращенное сообщение не содержит ничего полезного (просто включите трассировку, которую я уже сделал). Вот фрагмент того, что возвращается на случай, если кому-то интересно:
<div class="content-container">
<h3>HTTP Error 400.0 - missing content</h3>
<h4>Bad Request</h4>
</div>
<div class="content-container">
<fieldset><h4>Most likely causes:</h4>
<ul> <li></li> </ul>
</fieldset>
</div>
<div class="content-container">
<fieldset><h4>Things you can try:</h4>
<ul> <li>Create a tracing rule to track failed requests for this HTTP status code. For more information about creating a tracing rule for failed requests, click <a href="http://go.microsoft.com/fwlink/?LinkID=66439">here</a>. </li> </ul>
</fieldset>
</div>
Кто-нибудь знает, что может быть причиной этого? Или какой подход отладки я мог бы предпринять, чтобы получить более полное представление о проблеме?