Я понимаю, что эта ошибка возникает при получении запроса с усеченным или измененным Viewstate (если это не подтверждает кодировку base64).
Различные источники в Интернете указывают мне на следующие причины, по которым эта ошибка может возникать в связи с viewstate,
- Соединение было прервано во время выполнения запроса
- Браузер не смог отправить полный запрос
- Клиент изменяет запрос перед отправкой обратно на сервер
Среди возможных причин сервер получит указанную длину контента в заголовке только в 3-м случае.
Сказав это,
- почему другие случаи не классифицируются как IIS как Плохой запрос?
- Почему этот запрос даже передается в ASP.NET, если полученное содержимое не соответствует длине содержимого в заголовке запроса?
Я что-то здесь пропускаю? спасибо.
// Обновление 1
Ok. вот больше подробностей из моего анализа,
Когда соединение было прервано или прервано клиентом, ASP.NET выдает исключение, которое перехватывается в Application_Error global.ascx.
Интересно, что и здесь мы видим, что Request.ContentLength больше чем Context.Request.TotalBytes.
Для меня это, очевидно, означает, что запрос был полностью получен сервером. Это подтверждает, что IIS является подходящим кандидатом, чтобы обработать это и вообще не передавать запрос в ASP.NET.
Существует ли какая-либо конфигурация в IIS для достижения этой цели? Есть ли другие веские причины, почему IIS не делает этого по умолчанию?