Сообщение об ошибке с кодом Http Status 503 в System. net .Http library - PullRequest
0 голосов
/ 21 апреля 2020

У нас есть 2 бэкэнд-сервиса, взаимодействующих друг с другом, оба они используют. net framework с System. net .Http library

Один из них возвращает статус HTTP код 503 с некоторым ответным сообщением («данные недоступны») при выполнении определенного условия, как показано ниже на скриншоте

enter image description here

код контроллера реализация выглядит следующим образом:

HttpResponseMessage response = new HttpResponseMessage { StatusCode = HttpStatusCode.ServiceUnavailable, ReasonPhrase = "XXXXXX data is currently not available XXXXXXXXX" };
response.Content = new StringContent("XXXXXX is currently not available XXXXXXXXXX");
return response;

другой сервис, вызывающий этот API, потребляет ответ и получает это WebException, что является желаемым случаем, но проблема в том, что мы теряем сообщение («данные недоступны» ") при отправке из первого сервиса, когда я попытался напечатать ответ в окне отладки, он показал следующий результат:

HttpWebResponse aresponse = request.GetResponse() as HttpWebResponse;
'HttpWebResponse aresponse = request.GetResponse() as HttpWebResponse' threw an exception of type 'System.Net.WebException'
    Data: {System.Collections.ListDictionaryInternal}
    HResult: -2146233079
    HelpLink: null
    InnerException: null
    Message: "The remote server returned an error: (503) Server Unavailable."
    Response: {System.Net.HttpWebResponse}
    Source: "System"
    StackTrace: null
    Status: ProtocolError
    TargetSite: null

Как показано в выходном сообщении, это не то, что я отправил с первого служба. Это сообщение по умолчанию для кода состояния HTTP 503.

Есть ли способ прочитать содержимое ответа из WebException?

1 Ответ

0 голосов
/ 21 апреля 2020

Найдя решение, вы можете прочитать ответ System.net.WebException

catch(WebException ex)
{
      HttpWebResponse errorResponse = webException.Response as HttpWebResponse;

      var statusDescription = errorResponse.StatusDescription;
      if(statusDescription.Contains("XXXXX"))
      {
         // Added the condition here
      }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...