我有一个相当混乱的问题。
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中
答案 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的源不在您的计算机上。
希望这有帮助
西拉