从服务器所在的同一LAN中的客户端调用DNS时出现WebSocket错误(Signalr2和core)

从服务器所在的同一LAN中的客户端调用DNS时出现WebSocket错误(Signalr2和core),websocket,url-rewriting,signalr,reverse-proxy,asp.net-core-signalr,Websocket,Url Rewriting,Signalr,Reverse Proxy,Asp.net Core Signalr,我正在开发一个以Asp.Net为核心和Signal的web应用程序。当客户端与服务器位于同一LAN中,并且试图使用dns访问服务器时,就会出现问题。如果客户端使用本地ip(如192.168.1.40)或客户端位于LAN之外(如移动设备)并使用dns(如myapp.company.com),则该功能正常 当dns通过下一条管道从外部访问服务器时,反向代理将访问该服务器: 1) 静态ip路由器:从80到192.168.1.35 2) 192.168.1.35中的IIS站点,ARR和Url重写侦听dn

我正在开发一个以Asp.Net为核心和Signal的web应用程序。当客户端与服务器位于同一LAN中,并且试图使用dns访问服务器时,就会出现问题。如果客户端使用本地ip(如192.168.1.40)或客户端位于LAN之外(如移动设备)并使用dns(如myapp.company.com),则该功能正常

当dns通过下一条管道从外部访问服务器时,反向代理将访问该服务器:

1) 静态ip路由器:从80到192.168.1.35 2) 192.168.1.35中的IIS站点,ARR和Url重写侦听dns(myapp.company.com)并重定向到另一个内部服务器192.168.1.40 3) 内部服务器192.168.1.40侦听端口80和443中的自托管asp.net核心应用程序

再次总结一下:

它在以下情况下工作: 1) 局域网内的客户端使用服务器本地IP(192.168.1.40) 2) 客户端是指局域网(如4g移动设备)使用dns

在以下情况下失败: 1) 局域网内的客户端调用dns

注意:我也尝试过使用asp.net 4.7.1和signalr 2.2.1以及两种类型的客户端(以及Unity 3d应用程序和javascript应用程序),以防它与客户端有关

几年前,我想我也遇到了同样的问题,这可能与反向代理如何处理局域网内的NAT解析有关,但我找不到我是如何修复的,也找不到在互联网上找到解决方案的,真遗憾,我没有记笔记

最终我们可以在生产中生存下来,因为客户总是在内部局域网之外,但这真的让我很生气,我认为这可以帮助内部网开发人员。无论如何,我会继续尝试(已经搜索了几天),我会发布我找到的任何东西


谢谢

对这一反应持怀疑态度。我只是在家里使用服务器

dns解析为外部ip,并且您所在的路由器/防火墙不会以与外部连接相同的方式从内部将连接路由到外部ip

您可能需要指向内部ip的内部dns条目,或者主机文件中指向内部ip的条目