c# - mappings - ¿Puede un ASP.NET HttpHandler manejar un http 400-Solicitud incorrecta?
iis add a new managed http handler (3)
Si sabe lo que está causando el 400, entonces puede personalizar el comportamiento de http.sys a través del registro para manejarlo:
http://support.microsoft.com/kb/820129
Sin embargo, debe tener en cuenta que existen posibles ramificaciones de seguridad y rendimiento al hacer esto.
Otra opción sería usar un proxy de filtrado antes de IIS, capturando así la solicitud antes de que vaya más allá.
Tenemos un HttpHandler que trata directamente con las publicaciones binarias a través de HTTP desde el software cliente personalizado. El software del cliente ocasionalmente envía datos que dan como resultado que IIS 7 responda con un 400 - Solicitud incorrecta. Como la "400 Bad Request" es especial porque HTTP.SYS la maneja de forma transparente en modo kernel sin notificar al usuario de nada, no se generan errores para ser manejada en ASP.NET. ¿Es posible atrapar este http 400 en ASP.NET, para poder escribir datos específicos en la secuencia de respuesta en estos escenarios? Una redirección a otra página no es una opción, ya que debe estar en la Solicitud / Respuesta actual.
Si su cliente personalizado hace que IIS active el HTTP 400, probablemente sea defectuoso y no envíe solicitudes HTTP válidas de acuerdo con el estándar. Si puede modificar el cliente, sería lo correcto. De lo contrario, con lo que está trabajando no es HTTP, e IIS está diseñado para manejar solicitudes HTTP. Por lo tanto, debe ejecutar un servidor personalizado para su propio protocolo (que es una cosa similar a HTTP no estándar).
No se recomienda utilizar IIS / ASP.NET para manejar una solicitud de este tipo ya que podría ocasionar que ocurran cosas inesperadas.
En cambio, les pediría que corrijan el software cliente personalizado. Bríndeles un informe que muestre las solicitudes fallidas. Si puede, ejecute un rastreador como Wireshark y envíeles los paquetes si no creen que el problema es con su software.