Pregunta

Tengo una aplicación que a veces deben hacer algunas peticiones al servidor para ver que esas solicitudes estén debidamente bloqueados. En otras palabras, el esperada es la respuesta del servidor 403 Prohibida.

Con un trozo de código como el siguiente:

HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(protectedPage);
httpRequest.Method = WebRequestMethods.Http.Head;
WebResponse response = HttpRequest.GetResponse();

a WebException es lanzado en la última línea.

Cuando perfiles de código, esta excepción en un bloque try / catch tiene un impacto en el rendimiento, que quiero evitar.

¿Hay una manera de comprobar si hay respuesta del servidor, esperando un 403, sin tener que capturar una excepción (pero evitando el uso de enchufes directamente)? ??

¿Fue útil?

Solución

Por desgracia, esta es una excepción irritante en el marco, y no hay manera de evitarlo (sin dejar de utilizar la clase HttpWebRequest). Pero, como señaló alta, este manejo de excepciones se llevará a nanosegundos, mientras que la solicitud Web en sí se llevará a milisegundos (en el mejor), por lo que no se preocupe por ello.

El objeto WebException tiene una propiedad Response que contiene la respuesta; cuando se controla la excepción, es importante desechar ese objeto WebResponse (para evitar fugas de conexiones).

Otros consejos

¿Por qué tardan tiempo en el perfilado no es probablemente la parte de agarre excepción, sino la respuesta real de la página web.

La propiedad WebException.Status le dará el código de estado de la respuesta HTTP y se puede hacer un procesamiento adicional en base a eso.

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