2017-07-31 42 views
4

我有一个用F#编写的服务器的应用程序,并使用和蔼的服务web文件。我使用PowerShell远程登录到网络中的另一台机器上运行应用程序(该应用程序也位于其中一个网络驱动器中)。我这样做是因为该机器可以访问服务器所需的第三方API。现在,当我做[IPAddress_Of_Remote_Machine]/[html_file][name_of_pc]/[html_file]然后铬是永远等待,不会返回网页。这并没有发生,我最近遇到了这个问题。我打开了一个不同的端口,并使用它来代替默认的端口80.这使事情发挥作用,但问题在几天后不断出现。我不认为这是一个防火墙问题,但我无能为力,为什么会发生这种情况。客户端永远在等待远程服务器返回一个网页

当运行netstat的-an,这是我得到什么(我躲在IP地址):

enter image description here

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

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

enter image description here

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

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

UPDATE:

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

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

然后我跑的应用: enter image description here

但是,它仍然没有工作,这个时候它说当我做网站无法达到:http://[name_of_pc]:6001

enter image description here

+2

0。0.0.0不是回送地址。 0.0.0.0表示'该系统上的任何IP地址'。大多数服务在0.0.0.0:port#上进行侦听,以便在多个IP地址分配给适配器或通过多个适配器的情况下,您不必手动选择实际希望侦听的IP地址。因为你正在得到一个portqry响应,我将托管一个helloworld网站并尝试用'invoke-webrequest'或浏览器下载它并发布结果。 –

+0

@TySavercool奇怪的是,我今天重新运行它,它正确地检索网页。 – Kafo

+0

@TySavercool我更新了我的问题。我的应用程序工作,但helloWorld没有。 – Kafo

回答

1

移动这一个答案,以便它可以被关闭:

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

+1

为了在上面的评论线程中涵盖您的担忧:我认为您看到它无法正常工作,因为您访问它的方式和位置如何。如果将IP绑定设置为0.0.0.0:6001,则应该在分配的任何IP地址上对该系统进行内部和外部访问。如果您使用特定的IP地址,则需要确保您正在启动请求的系统正在访问该IP地址。如果您使用的是该服务器的DNS名称,并且事实证明该DNS记录是该系统上的另一个IP,那么它将不起作用。 –

+0

这是除了重点。我在Hello World应用中将其设置为127.0.0.1的事实与原始问题无关。即使IP地址设置为0.0.0.0并且远程访问,问题仍然会发生。 – Kafo

+0

此外,它有时会起作用,而且它并没有其他时间。远程机器的IP地址应该正确,因为它工作正常。在我发布我的问题后,它在第二天就工作了,所以我现在没有这个问题,但我担心它会像过去那样回来。 – Kafo

相关问题