HttpClient, поймать не удается подключиться

У меня есть следующий код:

        ProgressMessageHandler progress = new ProgressMessageHandler();
        progress.HttpSendProgress += new EventHandler<HttpProgressEventArgs>(HttpSendProgress);
        HttpRequestMessage message = new HttpRequestMessage();
        message.Method = HttpMethod.Post;
        message.Content = content;
        message.RequestUri = new Uri("http://myaddress");
        var client = HttpClientFactory.Create(progress);
        sending = client.SendAsync(message);


    private void HttpSendProgress(object sender, HttpProgressEventArgs e)
    {
         //....
    }

Я хочу поймать ситуацию, когда "мой адрес" недоступен. Метод HttpSendProgress вызывается, когда прогресс активен, поэтому я не могу проверить этот метод. Любой способ проверить, доступен ли «мой адрес». У меня есть идея запустить еще один поток, чтобы проверить, когда HttpSendProgress вызывается в последний раз. Но, может быть, есть стандартный метод?


person Oleg Sh    schedule 17.01.2015    source источник


Ответы (1)


Я не думаю, что вы можете проверить, является ли адрес рабочим адресом в событии прогресса. Вам нужно проверить статус после того, как ответ вернулся.

    if (response.IsSuccessStatusCode)
    {
        Console.WriteLine(response.StatusCode.ToString());
    }

Как определить статус ответа 404, когда с помощью HttpClient.GetAsync()

person Kallol    schedule 18.01.2015
comment
ответ не возвращается. Он ждет неограниченное время :( - person Oleg Sh; 18.01.2015
comment
Вы установили timeout? client.Timeout = Timespan.FromSeconds(30). Это должно вернуться с ответом через 30 секунд - person Kallol; 18.01.2015