在与Web应用程序相同的服务器场上调用ASP.NET Web服务

时间:2009-05-21 16:14:46

标签: asp.net web-services web-applications load-balancing web-farm

当我尝试从ASP.NET Web应用程序调用ASP.NET Web服务时,我收到以下错误。我相信这是因为Web服务和Web应用程序位于同一个Farm /同一Load Balancer后面。

A connection attempt failed because the connected party did not properly
respond after a period of time, or established connection failed because
connected host has failed to respond [IP Address removed]:80

当我从本地计算机上的Web应用程序调用服务器场上的Web服务时,或者当我从服务器上的Web应用程序调用本地计算机上的Web服务时,不会发生此错误。

知道为什么会出现这种错误吗?

3 个答案:

答案 0 :(得分:2)

我的问题的解决方案是在负载均衡器上打开NAT。

请求是从服务器场中的服务器发送到Load Balancer,然后Load Balancer会将该请求发送到服务器场中的一个服务器(可能甚至是请求它的同一服务器)。问题是,处理请求的服务器会尝试将响应直接发送回“请求客户端”而不是返回到Load Balancer,因此发出请求的服务器只会忽略响应,因为它不是由Load Balancer发送。通过打开NAT,所有响应都被发送回Load Balancer,然后Load Balancer将响应发送到原始客户端。

答案 1 :(得分:0)

这只是一个猜测,但Web服务器是否可以实际看到正在使用的IP地址?如果它位于负载均衡器后面的服务器场上,则负载均衡器本身或防火墙或代理服务器可能会阻止该IP。

您可以通过远程桌面和ping IP地址访问Web服务器吗?

答案 2 :(得分:0)

服务器场节点上的TCP / IP堆栈不会将调用路由到负载均衡器的IP地址,但会自动将其转换为特定服务器场节点上127.0.0.1:80上的本地调用。打电话。确保您的Web服务器已设置为处理此案例。