Подтвердить что ты не робот

Получить ошибки WebClient как строку

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

Я хочу, чтобы инструмент сообщал, когда есть проблемы, поэтому я развернул службу с проблемой с контрактом, чтобы проверить ее.

Когда я перейду к нему, я получаю страницу с очень описательным сообщением, например:

ExceptionDetail, вероятно, созданный IncludeExceptionDetailInFaults = true,     значение которого:     System.InvalidOperationException: Исключение было вызвано вызовом WSDL     расширение экспорта:
    System.ServiceModel.Description.DataContractSerializerOperationBehavior     контракт: DataContract для типа XXX не может быть добавлен в DataContractSet, поскольку тип     XXX с тем же именем контракта XXX в пространстве имен XXX уже присутствует     и контракты не эквивалентны и т.д.

Я хочу, чтобы иметь возможность звонить:

myErrorMsg = WebClient.DownloadString("MyBadService.svc");

и получить это полезное сообщение об ошибке как строку, однако я получаю следующее WebException:

Удаленный сервер ответил на ошибку: (500) Внутренняя ошибка сервера.

Как я могу получить то же сообщение об ошибке, которое я получил в браузере, возвращенном в виде строки, не получая исключения?

Спасибо.

4b9b3361

Ответ 1

Вы должны поймать исключение и прочитать ответ.

catch (WebException exception)
{
  string responseText;

  var responseStream = exception.Response?.GetResponseStream();

  if (responseStream != null)
  {
      using (var reader = new StreamReader(responseStream))
      {
         responseText = reader.ReadToEnd();
      }
  }
}