第九次请求时长轮询响应 502 错误网关

Longpolling responds 502 bad gateway on the nineth request

我正在调试一个 Azure 架构,该架构由一个 blob 存储帐户组成,该帐户对应用服务执行 CORS 请求。请求配置是使用 Signalr 核心 "Long polling" 设置的。 CORS 配置似乎一直有效,直到第九次协商请求因 502 bad gateway 错误而失败。 DNS 记录路由通过提供 DDOS 保护/速率限制的 Cloudflare。

我的直觉告诉我这是JSON 序列化过程中的无限循环造成的。服务器重新启动或发生其他情况后,它无法将通常对前 8 个请求所做的 Access-Control-Allow-Origin header 添加。

我需要帮助使用上述工具创建一致的流连接。这将涉及修复 bad gateway 错误。

信号服务器配置

https://github.com/DoubleCouponDay/portfolio/blob/master/server/portfolio/Startup.fs

Signalr 客户端配置

https://github.com/DoubleCouponDay/portfolio/blob/master/client/src/app/services/music.service.ts

一般来说,由于服务器随机崩溃,大多数人都会收到 signalr 的 502 错误网关错误。没有始终匹配阅读此答案的人的情况的一致错误,因此将来假设错误的网关是信号器的非常普遍的请求崩溃。

在我的例子中,这是在从文件中读取 X509 证书时 WindowsCryptographicException 引起的。该错误不会传播到 signalr 客户端或 azure 日志,因此必须进行远程调试才能检测到这一点。

解决方案是将 X509KeyStorageFlags.MachineKeySet 枚举作为参数传递给我的 X509Certificate 对象,而不是其他选择。这是因为服务器将证书存储在本地机器存储中,而不是用户存储中。