.NET Core 2.0 HttpClient синглтон бросая 502 - PullRequest
0 голосов
/ 04 мая 2018

У меня есть веб-приложение, выполняющее роль шлюза для различных внутренних служб. Эти сервисы используются с использованием одного экземпляра HttpClient, который создается при запуске (то есть Startup.cs)

Через определенный промежуток времени что-то заставляет HttpClient перестать работать с нашими API-интерфейсами и сразу же завершится ошибкой с ошибками HTTP 502 для каждого вызова, использующего этот клиент. (Обратите внимание, что я все еще могу поразить наши API, используя другие средства, такие как Почтальон)

Также помните, что все это развернуто на различных AppServices в Azure.

Есть какие-нибудь идеи относительно того, что может повредить HttpClient таким образом?

Спасибо, -Tim

Ответы [ 2 ]

0 голосов
/ 05 мая 2018

Какой бы ни была ошибка, ваш запрос httpclient вызывает сбой вашего веб-сервера. Чтобы исследовать это, вам нужно перейти к Просмотрщику событий вашего AppService.

Вот шаги для запуска средства просмотра событий:

  1. Перейдите на сайт управления Kudu вашего сайта (т.е. https://{sitename}.scm.azurewebsites.net
  2. Открыть пункт меню: Инструменты => Поддержка
  3. Выберите соответствующий каталог Azure AD на своем веб-сайте
  4. Нажмите Анализ => Просмотр событий.
  5. Проверьте сообщения об ошибках
0 голосов
/ 05 мая 2018

Эта ошибка обычно выдается, когда вы находитесь за прокси-сервером. Если вы используете прокси-сервер, вам, вероятно, придется снова аутентифицировать http-клиента. Другая возможность - снова генерировать экземпляр Singleton, когда он выдает ошибку, например, Singleton.killInstance(); Если ваша реализация выглядит следующим образом:

public class Singleton
{
   private static Singleton instance;
   private Singleton() {}
   public static Singleton instance
   {
      get 
      {
         if (instance == null)
         {
            instance = new Singleton();
         }
         return instance;
      }
   }
  public static void Singleton killInstance()
  {
    instance == null
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...