2016-02-02 1 views
0

У меня есть стабильная реализация на RestSharp, запрашивающая HTTP WebAPI WebService с тайм-аутом 60 секунд. Фактически эта реализация используется в службе Windows, поэтому этот WS получает много запросов в день.RestSharp Тайм-аут превышен - лучшая реализация

Дело в том, что иногда я получаю сообщение об ошибке (15 в день aprox.) И не знаю, как обращаться с этими ошибками, поэтому у каждого запроса может быть ответ. (На самом деле я думаю о повторном исполнении).

Public Sub UpdateQuery(ByVal query As Request) 
     Dim client As New RestClient(ConfigurationManager.AppSettings("SERVICE_URL") & query.Query) 
     Dim request = New RestRequest(ConfigurationManager.AppSettings("SERVICE_URL") & query.Query, Method.PATCH) 
     Dim response As New RestResponse 
     request.Timeout = 1000 * ConfigurationManager.AppSettings("RequestTimeOut") 
     request.AddParameter("application/json", query.Body, ParameterType.RequestBody) 
     response = client.Execute(request) 

     If response.ErrorException Is Nothing Then 
      If response.StatusCode = HttpStatusCode.NoContent Then 
       query.StatusCode = response.StatusCode 
      Else 
       query.StatusCode = response.StatusCode 
       query.ErrorDescr = JObject.Parse(response.Content).SelectToken("error.message.value") 
      End If 
     Else 
      response = client.Execute(request)     'Retry¿?¿? 
      If response.ErrorException Is Nothing Then 
       query.StatusCode = response.StatusCode 
       If response.StatusCode <> HttpStatusCode.NoContent Then 
        query.ErrorDescr = JObject.Parse(response.Content).SelectToken("error.message.value") 
       End If 
      Else 
       Throw New Exception("UpdateQuery error:, response.ErrorException) 
      End If  
     End If  
    End Sub 

Исключение получил это один (в переводе на Google) -

System.Net.WebException : the waiting time of the operation was exceeded 
    in System.Net.HttpWebRequest.GetResponse () 
    in RestSharp.Http.GetRawResponse (HttpWebRequest request) 
    in RestSharp.Http.GetResponse (HttpWebRequest request) 

Любая идея, было бы полезно. Спасибо заранее.

ответ