我有一个.NET客户端应用程序调用我的.NET Web服务,该服务又调用第三方Web服务,例如,在'www.foo.com'.
.NET Client -> 'My Web Service' -> 'Third Party Web Service'
从Visual Studio 2008开始,这一切都运行正常,也就是说,我正在运行"我的Web服务",localhost:someport
其中成功调用了"第三方Web服务".
然后,我将"我的Web服务"发布到Windows 2003 Server框中.现在,当"我的Web服务"调用"第三方Web服务"时,我得到异常,
"System.Net.WebException:远程名称无法解析:'www.foo.com'."
我尝试过以下方法:
在我部署"我的Web服务"的服务器上,我打开了Internet Explorer并输入了Web服务地址" http://www.foo.com/somewebservice.asmx ".这是成功的,因为显示了可用的Web服务方法列表.
在web.config
"我的Web服务"文件中,我将"第三方Web服务"URL从网站名称更改为其IP地址.这失败,异常是"System.Net.Sockets.SocketException:尝试对无法访问的网络执行套接字操作".
然后,我编写了一个简单的Windows窗体测试工具来调用"第三方Web服务".我在服务器上运行了这个测试工具,并成功调用了"第三方Web服务".
然后我尝试了一个不同的第三方Web服务,它提供了与上面的1,2和3相同的行为.
最后,我将IP地址添加到服务器上的"hosts"文件中,但得到了相同的"远程名称无法解析"错误,尽管这次要快得多!如果是DNS问题,那么我不希望我的测试1和3工作.
我该如何解决这个问题?
从马克的评论到他自己的问题:
最后这是一个代理服务器问题.异常消息是红鲱鱼.为了解决这个问题,我创建了一个WebProxy
使用代理服务器的IP地址和端口的实例:
WebProxy proxy = new WebProxy( proxyServerIPAddress, Convert.ToInt32( proxyServerPort ) ); myService.Proxy = proxy;
取消您的代理设置