2017-08-09 319 views
2

我有一个使用VS2015编写的自托管C#Windows服务,其中包含SignalR并使用版本2.2.2和jQuery 3.2.1。它适用于所有使用“真实”(可寻址)IP地址的系统。但是位于NAT后面的计算机却不行。他们得到一个“SignalR:错误加载集线器。确保您的集线器参考是正确的,例如”错误。如果您使用的URL是“http://servername/signal/hubs”,您将得到一个“服务器花费太长时间回应”错误(客户端使用真实IP查看源文件)SignalR:适用于“真实”IP,但不适用于NAT

客户端上的Windows防火墙被禁用但SignalR服务正在运行在80和443,所以我不认为这会是一个问题。无论如何,我很困惑,在这一点上,我甚至不知道要发布什么代码。

我可以检查,做什么,发布找出为什么这不适用于NAT'd客户端?

编辑:我有一些其他人测试这个,发现我们两个人使用U-Verse有连接问题但是,在主要办公室谁在企业NAT连接。所以也许这是U-Verse路由器/防火墙中的一些阻止连接的东西。但为什么它会阻塞端口80和443? SignalR是否会在连接上做任何不寻常的事情?

编辑#2:我在服务器上运行Wireshark。它接收来自NAT客户端的请求,但不断重试将响应发送到端口80.我并不擅长理解Wireshark或寻找什么。显然,有些东西不能正常工作。

+0

U-Verse自己可能会阻塞端口80和443(如果是的话,也会阻止25(SMTP)),使人们无法在家中运行Web服务器,因为这是您未付费的事情。使用端口8080是一种常见的解决方法。企业级的互联网连接预计将能够容纳一个网络服务器。不要忘记在重新启用防火墙后运行恶意软件检查。 –

+0

但是,如果NAT客户端向U-Verse网络外端口80/443上的SignalR服务器发起请求,那么来自SignalR的阻止回来的是什么? – Velocedge

回答

0

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

相关问题