【问题标题】:SignalR: Works with "real" IP's but not NATSignalR:适用于“真实”IP,但不适用于 NAT
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2014-02-10
    • 2019-07-06
    • 1970-01-01
    • 1970-01-01
    • 2020-06-23
    • 2018-09-06
    • 1970-01-01
    • 1970-01-01
    • 2014-12-22
    相关资源
    最近更新 更多