net httpstatuscode httpresponsemessage httpresponseexception from created code asp asp.net http-response-codes

asp.net - httpstatuscode - return json asp net core



Establecer Response.Status genera la excepción de "Cadena de estado HTTP no válida" (1)

Estoy escribiendo un controlador HTTP en ASP.NET 4.0 e IIS7 y necesito generar una condición de archivo no encontrado.

Copié el siguiente código del nuevo libro de Mathew McDonald, Pro ASP.Net 4 en C # 2010. (La variable de respuesta es una instancia de la respuesta HttpResponse actual.)

response.Status = "File not found"; response.StatusCode = 404;

Sin embargo, descubrí que la primera línea genera el error de tiempo de ejecución La HTTP status string is not valid.

Si, en lugar de las líneas de arriba, uso lo siguiente:

response.Status = "404 Not found";

Entonces todo parece funcionar bien. De hecho, incluso veo esa respuesta.StatusCode se establece en 404 automáticamente.

Mi problema es que no quiero que esto falle en el servidor de producción. Así que me sentiría mucho mejor si pudiera entender la forma "correcta" de lograr esto. ¿Por qué el primer enfoque funcionó para Mathew McDonald pero no para mí? ¿Y el segundo enfoque siempre será confiable?

¿Alguien puede ofrecer algún consejo?


Esto se debe a que la propiedad Status es la línea de estado completa enviada al cliente, no solo el mensaje.

Puedes escribir:

response.Status = "404 File not found";

O, preferiblemente:

response.StatusCode = 404; response.StatusDescription = "File not found";

Tenga en cuenta que, según su documentación, HttpResponse.Status está en desuso en favor de HttpResponse.StatusDescription .