客户端永远等待远程服务器返回一个网页

时间:2017-07-31 17:20:47

标签: powershell tcp f# suave

我有一个使用F#编写的服务器的应用程序,并使用suave提供web文件。我使用powershell远程登录到网络中的另一台机器来运行应用程序(该应用程序也在其中一个网络驱动器中)。我这样做是因为该机器可以访问服务器所需的第三方API。现在,当我执行[IPAddress_Of_Remote_Machine]/[html_file][name_of_pc]/[html_file]时,Chrome会永远等待,并且无法返回网页。这在以前没有发生过,我最近遇到了这个问题。我打开了一个不同的端口并使用它而不是默认的80.这使事情有效,但问题在几天之后不断出现。我不认为这是一个防火墙问题,但我对这种情况发生的原因一无所知。

运行netstat -an时,这就是我得到的(我隐藏了IP地址):

enter image description here

正如您所看到的,所有连接都在CLOSE_WAIT或ESTABLISHED中,但不是LISTENING。所有这些TCP连接可能是因为我在应用程序中运行了PhantomJS和另外两个API。但是,回送地址也在同一个端口5959上打开: enter image description here

我不确定这两者之间有什么区别但是当使用PortQryUI查询远程服务器时它会返回成功!

enter image description here

我已经在服务器上为端口5959制定了入站规则,因此应该允许它。该网页停留在等待[name_of_pc]。此外,有时这个问题消失了,一切正常。

这背后的潜在问题是什么?为什么会突然发生这种情况?

更新

我今天重新运行了该应用程序并且它正常运行。可能是在防火墙内动态设置了什么?不确定发生了什么。我运行服务器的机器上运行了一堆应用程序,也许有一个外部进程正在影响它?

我用Suave制作了一个hello world应用程序并将其部署在网络驱动器上以测试它是否能够正常工作。我打开了端口6001的入站规则 enter image description here

然后我运行了应用程序: enter image description here

然而,它仍然无法正常工作,而这一次它说我无法访问该网站:http://[name_of_pc]:6001

enter image description here

1 个答案:

答案 0 :(得分:1)

将其移至答案以便关闭:

你可以发布suave cfg的绑定部分吗?我猜你知道那是因为你使用的是非标准端口,但如果你不需要,请搜索HttpBinding。我怀疑你会发现它指向127.0.0.1,这对于远程访问来说还不够好。您可以尝试将其更改为0.0.0.0或服务器的实际IP地址。我会首先尝试0.0.0.0以获得它提供的灵活性