.NET Core 2.0 HttpClient Singleton投掷502

时间:2018-05-04 18:14:15

标签: azure httpclient microservices

我有一个Web应用程序充当各种内部服务的网关。使用HttpClient的单个实例消耗这些服务,在启动时实例化(即Startup.cs

经过一段时间后,某些事情导致我们的HttpClient停止访问我们的API,并且在使用该客户端的每次调用时立即失败并出现HTTP 502错误。 (请注意,我仍然可以使用其他方式点击我们的API,例如Postman)

另请注意,这些都部署到Azure中的各种AppServices。

关于什么可能以这种方式破坏HttpClient的任何想法?

谢谢, -Tim

2 个答案:

答案 0 :(得分:0)

当您在代理服务器后面时,通常会出现此错误。 如果您使用代理,则可能需要再次验证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
  }
}

答案 1 :(得分:0)

无论错误是什么,您的httpclient请求都会导致您的Web服务器崩溃。为了进行调查,您需要转到AppService的事件查看器。

以下是启动事件查看器的步骤:

  1. 访问您网站的Kudu管理网站(即https:// {sitename} .scm.azurewebsites.net
  2. 打开菜单项:工具=>支撑
  3. 选择您网站的相关Azure AD目录
  4. 点击分析 =>事件查看器。
  5. 检查错误消息