使用旧代理设置的Web服务?

时间:2009-06-30 20:59:54

标签: vb.net web-services .net-2.0 proxy

我有一个相当混乱的问题。

Web服务A - 由Win32 App和其他各种Web应用程序直接调用 Web服务B - 由相同的Win32应用程序和一组不同的其他Web应用程序直接调用

我正在努力将B的引用添加到A中,这样我们就可以使用B提供的功能,而无需手动将代码重写/重新集成到A中。我在我的PC上有一个A的开发副本,我正在工作用,并在远程服务器上调用B的测试副本(测试服务器通过我们的托管服务提供商的互联网访问)

我相信我的代码已准备好进行测试,但每次我在本地副本上测试时,都会出现以下错误。

无法建立连接,因为目标计算机主动拒绝它10.1.X.XX:8080

at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
at System.Net.Sockets.Socket.InternalConnect(EndPoint remoteEP)
at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Int32 timeout, Exception& exception)

错误消息中列出的内部IP是旧的BorderManager网关。它已经不再使用了,我已经检查了所有的Machine.Configs,Web.Configs,注册表条目,甚至在我的电脑上对所有文件进行了全文搜索,其中所列的IP为2MB。我仔细检查了Internet选项连接设置,但这是由组策略公司管理的。我打电话给一个网络人员来验证IP是否未列在当前应用的策略中。

我无法在任何地方找到它,除非尝试跳过使用它的代码,并获得上面显示的异常。

我使用Web Service B的代码是:

 Dim oZip As New ZipTerr.ZIPTerr
 oZip.Url = "https://test.test.com/ZIPTerr/ZIPTerr.asmx" ' This really shouldn't be hardcoded...
 oZip.PreAuthenticate = True
 oZip.Credentials = New System.Net.NetworkCredential("username", "password")
 aCity = oZip.GetCities(pstrZip, Date.Now())

在调用oZip.GetCities()时出现上述错误。错误消息中的IP不以任何方式表明它是从本地网络中传出的,它是10. *私有IP,而测试服务器具有有效的可公开访问的IP。

任何想法??

更新: 这两个Web服务都在.NET 2.0中

2 个答案:

答案 0 :(得分:4)

由于代码作为服务运行,因此底层的System.Net库将不会使用Internet设置值。

在.config文件中没有特定设置的情况下,MS对其代理设置的派生细节有点粗略。

以下是一些尝试: -

使用一个命令行: -

 ProxyCfg -d

这将删除WinHTTP组件使用的任何代理设置(设计用于在.NET出现之前通过代码在这样的服务器设置中使用)。

 ProxyCfg -u

将当前用户的Internet代理设置复制到WinHTTP使用的系统范围设置。

最好在调用应用程序的web.config中自己配置代理设置: -

<system.net>
  <defaultProxy enabled="true">
     <!-- if above set to true configure below accordingly if false delete below-->
     <proxy proxyaddress="http://127.0.0.1:8888" bypassonlocal="False"/>
  </defaultProxy>
</system.net>

答案 1 :(得分:0)

最好的猜测:

错误来自您机器上没有的代码。 Web服务A和B是否在您的计算机上运行?

或者在dll中硬编码,其中dll的源不在您的计算机上。

希望这有帮助

西拉