在运行基于 IdentityServer 4 的产品的实例上,HTTPS 出站请求时间在 14-21 天后增加到 5 分钟

Mar*_*skI 5 amazon-web-services kestrel-http-server asp.net-core identityserver4

在 AWS 集群上运行基于 IdentityServer 4 的 ASP.Net Core 应用程序,14-21 天后,所有传出 HTTPS 请求需要 5 分钟或更长时间才能完成。

经过调查发现,死机WinHTTP Web Proxy Auto-Discovery Service出现以下错误:The endpoint mapper database entry could not be created.不确定这是问题还是操作系统中其他问题的副作用。

环境:

  • ELB 具有自动缩放组,其后面有两个实例,两个实例均出现问题
  • Windows 服务器 2019

笔记:

  • 它是一个自定义 AMI,但与没有遇到此情况的实例的唯一区别是产品在其上运行。
  • 发生在基于 .Net core 2.2 和 3.1 的应用程序版本上
  • 基于 IdentityServer4 v2 和 v3 的两个版本都会发生
  • 该应用程序是独立部署的
  • 该应用程序使用 Kestrel,前面没有反向代理

尝试过:

  • 启用 schannel:跟踪上设置的 schannel 日志中没有错误
  • 任何 EventViewer 日志中都没有其他值得注意的错误
  • 重启实例即可解决问题
  • 当运行curl.exe -v到机器上的HTTPS站点时,请求被卡住schannel: checking server certificate revocation
  • 实例上的时钟正常
  • 重新启动应用程序进程无法解决问题
  • HTTPClient在使用该服务的代码中禁用WinHTTP Web Proxy Auto-Discovery Service仍然会破坏该服务。

Mar*_*skI 2

对于那些遇到这种情况的人。

此问题的根源是WinHTTP 自动代理 (wpad) 服务,该服务用于自动配置代理设置,WinHTTP 5.1 实现了 Web 代理自动发现 (WPAD) 协议,也称为自动代理,并且它必须支持 DHCP。现在这就是问题发生的地方,AWS DHCP 不支持 DHCP 选项 252(由 WPAD 使用),这又导致了问题。

解决方案是禁用 WinHTTP 服务,因为它在 Windows 中默认打开。