2014-02-22 2 views
3

서버가 다운 되었기 때문에 RestSharp 요청이 실패했는지 어떻게 확인할 수 있는지 궁금합니다.RestSharp + Server Down - 서버가 다운되어 있는지 어떻게 알 수 있습니까?

서버를 종료 할 때 "NotFound"상태 코드가 표시되지만 특정 레코드를 찾을 수 없습니다 (최근에 삭제 된 레코드를 찾으려고하면 사이트에서 수행).

실제로 서버가 다운 된 것을 어떻게 알 수 있습니까?

편집

여기 내 코드

private readonly RestClient client = new RestClient(GlobalVariables.ApiUrl); 
      var request = new RestRequest("MyController", Method.POST); 
       request.AddParameter("UserId", "1"); 
       request.AddParameter("Name", name.Trim()); 

       var asyncHandle = client.ExecuteAsync(request, response => 
       { 
        var status = response.StatusCode; 
       }); 

답변

0

서버가 다운되면, 그것은 "404 NOTFOUND"오류를 반환하지 않아야합니다.

이 경우에 가장 적합한는 일시적인 과부하 또는 서버의 유지 보수에 HTTP Error 503 - Service unavailable

웹 서버 (웹 사이트를 운영가) HTTP 요청을 처리 할 현재없는 것입니다. 이것은 잠시 후에 이 완화되는 일시적인 조건이라는 것을 의미합니다. 이 상태의 일부 서버는 도 단순히 소켓 연결을 거부 할 수 있습니다.이 경우 소켓 생성 시간이 초과되어 다른 오류가 발생할 수 있습니다.

RestResponse.StatusCode503는 서버가 다운 있음을 알려드립니다 것을 확인하는 그런 식으로.

+0

Myabe 그것은에 다른, 링크를 참조하십시오, WebExceptionStatus 열거에 대한 자세한 내용은

try { var client = new RestClient(_configuration.ServerUrl); var request = new RestRequest { Resource = _configuration.SomeUrl, Method = Method.POST }; var response = client.Execute(request); if (response.ErrorException != null) { throw response.ErrorException; } } catch (WebException ex) { // TODO: check ex.Status, if it matches one of needed conditions. } 

: 연결 시간 초과, 호스트 이름을 확인할 수없는 등 그래서 나는 또한 다음 코드를 추가 프로덕션 서버에 있지만 WP8 에뮬레이터에서 코드를 실행할 때 로컬로 NotFound로 돌아옵니다. – chobo2

0

동일한 문제가 있습니다.

나는 ContentLength도 확인하기로 결정했습니다. 적어도 내 webservice는 항상 ContentLength> 0을 반환합니다 (NotFound 어커런스의 경우에도). 이것은 잘 풀리는 것 같습니다.

if (response.StatusCode == System.Net.HttpStatusCode.NotFound && 
       response.ContentLength == -1){ 
    ==> client couldn't connect to webservice 
} 
관련 문제