我有两台连接局域网的电脑。防火墙端口已打开。 我使用IIS在一台机器上运行WebService。当然,我可以通过B机器上的Web浏览器访问WebService(在A上),因此我确信可以远程访问WebService。
现在,我在Bb机器上运行一个控制台应用程序,在vb.net中开发,它将访问A机器的WebService。
控制台应用程序和WebService都是在VS2010上开发的。
在项目上创建引用,我可以看到并使用WebService。但我需要在代码上指定由于WebService而导致的URI可能会改变其位置。
手动指示URI的代码:
将myService改为新的MiServicioWeb.WebServiceSoapClient(" 192.168.1.13:8080")
此行引发异常,但未找到任何带有指定名称的元素的消息。我也尝试了以下几行,但没有成功:
这一个:
将myService视为新的MiServicioWeb.WebServiceSoapClient(" 192.168.1.13")
这一个:
将myService改为新的MiServicioWeb.WebServiceSoapClient(" 192.168.1.13:8080 / ServicioWeb.asmx")
但结果总是一样。
一些用户(raja)几天前写了一个答案,表明这应该有效,但我不知道为什么在我的情况下不起作用。
正如我之前所说,如果我在项目上创建引用,并使用以下代码行:
将myService改为新MiServicioWeb.WebServiceSoapClient()
它有效!但我需要的是手动设置URI ...
一些帮助将会很感激。
答案 0 :(得分:0)
如果尚未存在,则需要修改代理类以使其具有可以获取Uri并进行设置的构造函数。这个Uri需要提供给代理。
Dim uriFromConfig as String;
// read uriFromConfig from config or set it accordingly.
Dim myService As New MiServicioWeb.ServicioWebSoapClient(uriFromConfig);
这样,只要提供了正确的Uri,就可以调用任何ASMX。
总结一下,用另一台机器上的IP a.b.c.d调用托管在机器上的web服务:
如果#3成功,那么你会在浏览器上看到一个不错的页面。 您的客户端应用程序也应该能够立即连接。