SignalR:适用于 "real" IP,但不适用于 NAT

SignalR: Works with "real" IP's but not NAT

我有一个使用 VS2015 编写的自托管 C# Windows 服务,其中包括 SignalR 并使用版本 2.2.2 和 jquery 3.2.1。它适用于所有使用 "real"(可寻址)IP 地址的系统。但是位于 NAT 后面的计算机不能。他们收到 "SignalR: Error loading hubs. Ensure your hubs reference is correct, e.g. " 错误。如果你使用 URL http://servername/signal/hubs",你会得到一个 "Server took too long to respond" 错误。(具有真实 IP 的客户端查看源代码)。

Windows 客户端上的防火墙被禁用。但是,SignalR 服务在 80 和 443 上是 运行,所以我认为这不是问题。不管怎样,我现在很困惑,我什至不知道 post 的代码是什么。

我可以检查、做什么,post 来弄清楚为什么这对 NAT 客户端不起作用?

编辑:我让其他人对此进行了测试,发现我们中有两个使用 U-Verse 的人遇到了连接问题。但是,位于公司 NAT 上的总部人员正在连接。所以也许这是 U-Verse router/firewall 中的某些东西正在停止连接。但为什么它会阻止端口 80 和 443? SignalR 在连接上是否有任何异常?

编辑 #2:我 运行 服务器上的 Wireshark。它接收来自 NAT 客户端的请求,但不断重试将响应发送到端口 80。我不太了解 Wireshark 或要查找的内容。显然,有些地方不正常。

这对我来说很愚蠢。我只为没有安装 IIS 的 SignalR 使用服务器……显然您需要这样做才能在防火墙中打开端口 80 和 443。所有 18 台服务器上的防火墙都设置为允许从我的域的任何 IP 地址进行访问。使用 NAT 时,它使用完全不同的 IP,因此被停止。我在 SignalR 服务器上打开了 80/443,一切正常...D'oh!