2016-01-14 36 views
5

Perché sto ottenendo un HttpStatusCode di 0 se indico il servizio che il mio client si sta collegando a un URL non valido.Ottenere un HttpStatusCode di 0

My statusCodeAsInt viene visualizzato come uno 0. Perché non viene visualizzato come un 404 e viene gestito?

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); 
     } 

Qual è il modo corretto di gestire questo RestResponse?

risposta

9

Un codice di risposta di 0 indica generalmente che la risposta era vuota, ovvero non sono state restituite intestazioni.

Questo di solito accade quando una connessione viene accettata e quindi chiusa con garbo, nota anche come connessione FIN. Qual è il luogo in cui il server dichiara di aver finito di trasmettervi, ma continuerà ad ascoltare i nuovi messaggi. Potrebbe esserci un problema con il firewall.

Un'altra cosa da fare è cambiare IRestResponse in RestResponse. L'utilizzo di IRestResponse non offre vantaggi in questo scenario.

+2

È inoltre importante notare che un errore 404 si verificherà solo se la richiesta raggiunge un server Web valido. Il server Web crea il codice di stato "404". – BinaryEvolved

+1

Grazie, questo è stato utile. – obizues