Может ли ASP.NET HttpHandler обрабатывать http 400 - неверный запрос?
-
19-08-2019 - |
Вопрос
У нас есть HttpHandler, который напрямую работает с двоичными сообщениями по HTTP из клиентского программного обеспечения. Клиентское программное обеспечение иногда отправляет данные, в результате чего IIS 7 отвечает 400 - неверный запрос. Поскольку & Quot; 400 Bad Request & Quot; Особенность заключается в том, что HTTP.SYS прозрачно обрабатывает его в режиме ядра, не уведомляя пользовательский режим ни о чем, не возникает никаких ошибок для обработки в ASP.NET. Можно ли перехватить этот http 400 в ASP.NET, чтобы я мог записать конкретные данные в поток ответа в этих сценариях? Перенаправление на другую страницу не является вариантом, так как оно должно быть в текущем запросе / ответе.
Решение
Если вы знаете, что является причиной 400, то вы можете настроить поведение http.sys через реестр, чтобы справиться с ним:
http://support.microsoft.com/kb/820129
Однако вы должны знать, что это может привести к потенциальным последствиям для безопасности и производительности.
Другой вариант - использовать фильтрующий прокси перед IIS, тем самым захватывая запрос, прежде чем он пойдет дальше.
Другие советы
Вместо этого я бы попросил их исправить пользовательское программное обеспечение клиента. Дайте им отчет, показывающий неудавшиеся запросы. Если вы можете, запустите сниффер, например, Wireshark, и отправьте им пакеты, если они не уверены, что проблема в их программном обеспечении.
Если ваш пользовательский клиент вызывает IIS для запуска HTTP 400, он, вероятно, имеет недостатки и не передает допустимые HTTP-запросы в соответствии со стандартом. Если вы можете изменить клиента, это будет правильно. В противном случае вы работаете не с HTTP, а IIS предназначен для обработки HTTP-запросов. Поэтому вы должны запустить собственный сервер для своего собственного протокола (который является нестандартным HTTP-подобным).
Не рекомендуется использовать IIS / ASP.NET для обработки такого запроса, поскольку это может привести к непредвиденным неожиданностям.