2016-01-14 10 views
5

クライアントが不正なURLに接続しているサービスを指していると、HttpStatusCodeが0になるのはなぜですか。HttpStatusCodeを0にする

私のstatusCodeAsIntは0として表示されています。なぜそれが404として表示されず、処理されていませんか?

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

このRestResponseを処理する適切な方法は何ですか?

答えて

9

応答コード0は、応答が空であることを意味します。つまり、ヘッダーも返されませんでした。

これは通常、接続が受け入れられた後、正常に閉じられる(FIN​​接続とも呼ばれます)場合に発生します。これは、サーバーがあなたに放送を終了したと述べていますが、新しいメッセージを引き続き聞きます。 ファイアウォールの問題である可能性があります。

IRestResponseRestResponseに変更することもできます。 IRestResponseを使用すると、このシナリオでは利点はありません。

+2

404エラーは、リクエストが有効なWebサーバーにヒットした場合にのみ発生することにも注意してください。 Webサーバーは "404"ステータスコードを作成します。 – BinaryEvolved

+1

ありがとう、これは役に立ちました。 – obizues

関連する問題