【问题标题】:Cause of exception "System.Net.WebException: The remote name could not be resolved"?异常“System.Net.WebException:无法解析远程名称”的原因?
【发布时间】:2009-09-11 11:51:09
【问题描述】:

我有一个 .NET 客户端应用程序调用我的 .NET Web 服务,而后者又调用第三方 Web 服务,例如,“www.foo.com”。

.NET Client -> 'My Web Service' -> 'Third Party Web Service'

从 Visual Studio 2008 开始,一切正常,也就是说,我在 localhost:someport 中运行“我的 Web 服务”,它成功调用了“第三方 Web 服务”。

然后我将“我的 Web 服务”发布到 Windows 2003 Server 机器上。 现在,当“我的 Web 服务”调用“第三方 Web 服务”时,我得到了异常,
“System.Net.WebException:无法解析远程名称:'www.foo.com'。”

我尝试了以下方法:

  1. 在部署“我的 Web 服务”的服务器上,我打开 Internet Explorer 并输入 Web 服务地址“http://www.foo.com/somewebservice.asmx”。 这很成功,因为显示了可用 Web 服务方法的列表。

  2. 在“我的网络服务”的web.config 文件中,我更改了“第三方网络服务”的 URL 从网站名称到其 IP 地址。 这失败了,出现异常“System.Net.Sockets.SocketException:套接字操作是 尝试访问无法访问的网络”。

  3. 然后我编写了一个简单的 Windows 窗体测试工具来调用“第三方 Web 服务”。 我在服务器上运行了这个测试工具,它调用了“第三方 Web 服务” 成功了。

  4. 然后我尝试了不同的第三方 Web 服务,该服务的行为与上述 1、2 和 3 中的行为相同。

  5. 最后,我将 IP 地址添加到服务器上的“hosts”文件中,但得到了相同的“无法解析远程名称”错误,尽管这次要快得多! 如果是 DNS 问题,那么我不希望我的测试 1 和 3 能够正常工作。

我该如何解决这个问题?

【问题讨论】:

  • 这很可能是由于与服务器上 IIS 中的网站/服务相关的安全设置。这些设置中的某些内容阻止它调用其他服务器。您也应该尝试在 ServerFault 上发布此内容。
  • 您是否有 ISA 服务器或某些防火墙或代理?
  • 最后还是代理服务器的问题。例外信息是一条红鲱鱼。为了解决这个问题,我使用代理服务器的 IP 地址和端口创建了一个 WebProxy 实例: WebProxy proxy = new WebProxy( proxyServerIPAddress, Convert.ToInt32( proxyServerPort ) ); myService.Proxy = 代理;

标签: .net web-services


【解决方案1】:

从马克的评论到他自己的问题:

最后还是代理服务器的问题。例外信息是一条红鲱鱼。为了解决这个问题,我使用代理服务器的 IP 地址和端口创建了一个 WebProxy 实例:

WebProxy proxy = new WebProxy( proxyServerIPAddress, Convert.ToInt32( proxyServerPort ) );       
myService.Proxy = proxy;

【讨论】:

    【解决方案2】:
     <system.net>
            <defaultProxy>
                <proxy
                   usesystemdefault = "false"
             />
            </defaultProxy>
        </system.net>
    

    取消您的代理设置

    【讨论】:

      【解决方案3】:

      我认为这也可能表明存在 DNS 问题,因为我正在初步总结我自己最近遇到此异常的经验。在我(最近的)经验中,异常停止“自行”抛出(并由我的应用程序记录)。

      【讨论】:

        【解决方案4】:

        我们在有问题的服务器上运行两个应用时遇到了一些问题。只有当它在 SQL 作业代理下按计划运行时才会发生该错误,因此很难隔离问题。事实证明,网络人员在从 ISA 防火墙迁移到 Forefront 防火墙时遇到了麻烦。 Iamtonyzhou 在 app.config 中使用“usesystemdefault”的解决方案作为一种解决方法效果很好,直到网络防火墙问题得到解决。我不认为我会实例化 WebProxy 对象,因为我们的防火墙配置总是会发生变化。

        【讨论】:

          【解决方案5】:

          我在 2018 年在我的花哨网站上遇到了这个问题,我刚刚搬到了一个新的 GoDaddy VPS:System.Net.WebException:无法解析远程名称:'yada.yada'

          这发生在尝试发送 SMTP 并尝试联系外部网站/api 时。 HttpRequest 失败。我检查了一切。进入IIS设置。没什么..一切看起来都不错(我正在将值与我的旧专用服务器进行比较)。我确实在 IIS 下添加了 Proxy 0 设置 - 但我不认为是这样。

          最后我注意到我也无法在服务器上使用 IE 浏览互联网上的任何内容。我检查了所有 IE 设置。一切看起来都很好。我通过网站应用程序池回收。没有。最后,我重新启动了服务器。当我重新登录时,我现在可以使用 IE 浏览网站。所以我尝试了我的网站,最后它开始工作了。我不确定我做了什么,如果有的话。或者,如果服务器太新,则某些设置在初始设置时已关闭,需要冷重启才能修复。无论如何,我很高兴终于得到它。我想我看了 3 次。

          干杯

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-09-08
            • 2016-05-31
            • 2013-05-13
            相关资源
            最近更新 更多