【问题标题】:.NET Core 2.0 HttpClient Singleton throwing 502.NET Core 2.0 HttpClient Singleton 抛出 502
【发布时间】:2018-10-15 07:05:41
【问题描述】:

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

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

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

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

谢谢, -蒂姆

【问题讨论】:

  • 能否发布您收到的针对 502 错误的完整 HTML 响应?

标签: azure httpclient microservices


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2018-01-18
      • 1970-01-01
      • 1970-01-01
      • 2021-01-22
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 2018-07-29
      相关资源
      最近更新 更多