异常原因"System.Net.WebException:无法解析远程名称"?

7 .net web-services

我有一个.NET客户端应用程序调用我的.NET Web服务,该服务又调用第三方Web服务,例如,在'www.foo.com'.

.NET Client -> 'My Web Service' -> 'Third Party Web Service'
Run Code Online (Sandbox Code Playgroud)

从Visual Studio 2008开始,这一切都运行正常,也就是说,我正在运行"我的Web服务",localhost:someport其中成功调用了"第三方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"我的Web服务"文件中,我将"第三方Web服务"URL从网站名称更改为其IP地址.这失败,异常是"System.Net.Sockets.SocketException:尝试对无法访问的网络执行套接字操作".

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

  4. 然后我尝试了一个不同的第三方Web服务,它提供了与上面的1,2和3相同的行为.

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

我该如何解决这个问题?

Ken*_*itt 7

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

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

WebProxy proxy = new WebProxy( proxyServerIPAddress, Convert.ToInt32( proxyServerPort ) );       
myService.Proxy = proxy;
Run Code Online (Sandbox Code Playgroud)


小智 5

 <system.net>
        <defaultProxy>
            <proxy
               usesystemdefault = "false"
         />
        </defaultProxy>
    </system.net>
Run Code Online (Sandbox Code Playgroud)

取消您的代理设置