无法使用Web服务通过代码指定URL

时间:2014-04-10 22:14:50

标签: asp.net vb.net web-services

我有两台连接局域网的电脑。防火墙端口已打开。 我使用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 ...

一些帮助将会很感激。

1 个答案:

答案 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服务:

  1. 为代理Uri提供IP地址。 A.B.C.D
  2. 从防火墙设置中打开您在托管Web服务的计算机上使用的端口(50594)。
  3. 通过从客户端计算机的浏览器键入http://a.b.c.d:50594/ServicioWeb.asmx来验证是否可以访问asmx。 (不是托管网络服务的机器)
  4. 如果#3成功,那么你会在浏览器上看到一个不错的页面。 您的客户端应用程序也应该能够立即连接。