Я использую класс веб-запроса HTTP для вызова веб-службы RESTful.Мне нужно передать данные и получить данные, и все это, кажется, работает очень хорошо.Сегодня я попытался настроить время ожидания класса, потому что существует высокая вероятность того, что сервер, на котором запущена служба, находится в автономном режиме, и я не хочу тратить время на ожидание.Я все это настроил, но, похоже, ничего не изменилось.Звонок все еще ждал более 10 секунд, прежде чем потерпел неудачу.
При просмотре я обнаружил, что тайм-аут касается только обработки вызова и что предварительный поиск DNS не включен.Поскольку это было бы проблемой, было бы понятно, почему тайм-аут не работает так, как я ожидал.
Для дальнейшего чтения предлагается использовать класс HttpWebRequest в асинхронном стиле.Я посмотрел на код, чтобы сделать это, но не понимаю, как получить обратный вызов в моем коде, который является эффективно синхронным.
У меня следующий код:
HttpWebRequest _serviceRequest = (HttpWebRequest)WebRequest.Create(new Uri("http://mywebservice.com"));
_serviceRequest.Timeout = 3000;
HttpWebResponse response = (HttpWebResponse)_serviceRequest.GetResponse();
XmlReader reader = XmlReader.Create(response.GetResponseStream(), set);
Код, который я должен вызвать асинхронно, заканчивается следующей строкой, но я не уверен, что мне делатьчтобы получить объект ответа.
IAsyncResult result = (IAsyncResult)req.BeginGetResponse(new AsyncCallback(RespCallback), reqState);
Меня также беспокоит полусгоревшее асинхронное решение, подобное этому.Является ли хорошей практикой использование асинхронного метода через синхронный фрагмент кода.
Любые помощники оценили ...