2017-08-09 321 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'噢!

相關問題