Pregunta

Tenemos un HttpHandler que se ocupa directamente de las publicaciones binarias a través de HTTP desde un software cliente personalizado. El software del cliente ocasionalmente envía datos que dan como resultado que IIS 7 responda con una 400 - Solicitud incorrecta. Desde el " 400 Bad Request " es especial porque HTTP.SYS lo maneja de manera transparente en modo kernel sin notificar nada al modo usuario, no se generan errores para ser manejados en ASP.NET. ¿Es posible capturar 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.

¿Fue útil?

Solución

Si sabe qué está causando el 400, entonces puede personalizar el comportamiento de http.sys a través del registro para tratarlo:

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 continúe.

Otros consejos

En cambio, les pediría que arreglen el software del cliente personalizado. Déles un informe que muestre las solicitudes fallidas. Si puede, ejecute un sniffer como Wireshark y envíeles los paquetes si no creen que el problema está relacionado con su software.

Si su cliente personalizado hace que IIS active HTTP 400, probablemente sea defectuoso y no envíe solicitudes HTTP válidas de acuerdo con el estándar. Si puede alterar al cliente, sería lo correcto. De lo contrario, 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 usar IIS / ASP.NET para manejar una solicitud de este tipo, ya que podría causar que ocurran algunas cosas extrañas e inesperadas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top