【问题标题】:Call ASP.NET Web Service on the Same Farm as Web Application在与 Web 应用程序相同的场上调用 ASP.NET Web 服务
【发布时间】:2010-10-27 23:35:48
【问题描述】:

当我尝试从 ASP.NET Web 应用程序调用 ASP.NET Web 服务时出现以下错误。我相信这是因为 Web 服务和 Web 应用程序位于同一个场上/位于同一个负载均衡器后面。

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 应用程序调用 Farm 上的 Web 服务时,或者当我从 Farm 上的 Web 应用程序调用本地计算机上的 Web 服务时,不会发生此错误。

知道为什么会发生此错误吗?

【问题讨论】:

  • 在尝试访问调用它的 Web 应用程序持有的某些共享状态(会话状态等)时,Web 服务是否会阻塞和超时?

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


【解决方案1】:

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

请求是从场中的服务器向负载均衡器发出的,然后负载均衡器会将该请求发送到场中的其中一台服务器(甚至可能是请求它的同一台服务器)。问题是,正在处理请求的服务器会尝试将响应直接发送回“请求客户端”而不是返回到负载均衡器,因此发出请求的服务器将忽略响应,因为它不是由负载均衡器发送。通过开启 NATing,所有响应都被发送回负载均衡器,然后负载均衡器将响应发送到原始客户端。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 远程连接到 Farm 中的一台服务器后,您希望我 ping 哪个 IP 地址?服务器本身、场中的另一台服务器或负载平衡器的地址?
    • 运行 Web 服务的机器的公共 IP 地址和/或名称。正如我所说,这是一个猜测,但可能是那台机器由于某种原因看不到公共 IP
    • 事实上,你可以尝试从盒子里 ping 任何 IP 地址,看看它是否能看出来。
    【解决方案3】:

    场节点上的 TCP/IP 堆栈不会将调用路由到负载平衡器的 IP 地址,但会自动将其转换为特定场节点上 127.0.0.1:80 上的本地调用,即拨打电话。确保您的网络服务器已设置为处理这种情况。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-18
      • 2011-08-11
      • 2012-02-25
      • 2012-04-30
      • 1970-01-01
      • 2014-02-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多