【发布时间】:2017-08-09 17:03:00
【问题描述】:
我有一个使用 VS2015 编写的自托管 C# Windows 服务,其中包括 SignalR,并使用版本 2.2.2 和 jquery 3.2.1。它适用于所有使用“真实”(可寻址)IP 地址的系统。但是 NAT 后面的计算机不能。他们收到“SignalR:加载集线器时出错。确保您的集线器引用正确,例如”错误。如果您使用 URL http://servername/signal/hubs”,则会收到“服务器响应时间过长”错误。(具有真实 IP 的客户端请参阅源代码)。
Windows 防火墙在客户端上被禁用。但是,SignalR 服务在 80 和 443 上运行,所以我认为这不是问题。无论如何,我现在很困惑,我什至不知道要发布什么代码。
我可以检查、做什么、发布什么来弄清楚为什么这对 NAT 的客户端不起作用?
编辑:我让其他一些人对此进行了测试,发现我们两个使用 U-Verse 的人有连接问题。但是,总部位于公司 NAT 上的人员正在连接。所以也许这是 U-Verse 路由器/防火墙中停止连接的东西。但为什么它会阻塞端口 80 和 443? SignalR 在连接上是否有任何异常?
编辑#2:我在服务器上运行了 Wireshark。它接收来自 NAT 客户端的请求,但不断重试将响应发送到端口 80。我不太擅长理解 Wireshark 或要查找的内容。很明显,有些东西不能正常工作。
【问题讨论】:
-
U-Verse 本身可能会阻止端口 80 和 443(如果是这样的话,也会阻止 25 (SMTP)),以使人们在家中运行网络服务器变得很麻烦,因为这是您没有支付的费用为了。使用端口 8080 是一种常见的解决方法。预计企业级互联网连接能够容纳网络服务器。重新启用防火墙后不要忘记运行恶意软件检查。
-
但是如果 NAT 客户端在 U-Verse 网络外部的端口 80/443 上向 SignalR 服务器发起请求,那么被阻止的 SignalR 会返回什么?
标签: c# wireshark signalr-hub signalr.client