Why am I getting a HttpStatusCode of 0 if I point the service my client is connecting to to a bad URL.
My statusCodeAsInt is showing up as a 0. Why is it not showing up as a 404 and being handled?
IRestResponse response = client.Execute(restReq);
HttpStatusCode statusCode = response.StatusCode;
var statusCodeAsInt = (int) statusCode;
if (statusCodeAsInt >= 500)
{
throw new InvalidOperationException("A server error occurred: " + response.ErrorMessage, response.ErrorException);
}
if (statusCodeAsInt >= 400)
{
throw new InvalidOperationException("Request could not be understood by the server: " + response.ErrorMessage,
response.ErrorException);
}
What is the proper way to handle this RestResponse?
A response code of 0 generally means that the response was empty - i.e. not even headers were returned.
This usually happens when a connection is accepted, and then closed gracefully, also known as a FIN connection. Which is where the server states that it has finished broadcasting to you, but will continue to listen for new messages. Could be a firewall issue.
Another thing to do is to change IRestResponse
to RestResponse
. Using IRestResponse offers no advantages in this scenario.