Может ли ASP.NET HttpHandler обрабатывать http 400 - неверный запрос?

StackOverflow https://stackoverflow.com/questions/342247

Вопрос

У нас есть 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 для обработки такого запроса, поскольку это может привести к непредвиденным неожиданностям.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top