如何在运行时修改服务引用的位置?

时间:2011-03-08 11:04:10

标签: .net web-services url

我有一个客户端VB .NET 3.5 WPF应用程序,它基本上是一个测试工具 - 它调用的是同一解决方案中的webservice(经典的.NET 2.0 Web服务,而不是WCF应用程序)。检查一些服务方法是否正确运行。

我已将服务添加到VS中的客户端项目作为服务引用,并将两个项目的解决方案设置为启动项目。当我在本地调试和运行整个事情时,这工作正常。但问题是,我需要用户能够在运行时键入URL,并让测试工具检查指定URL处的服务,而不是VS正在运行的位置处的服务。这样测试工具就可以检出已部署的Web服务副本。问题是在服务引用中似乎没有任何方法可以使URL动态化并且可以从VB代码中设置。有可能吗?

2 个答案:

答案 0 :(得分:1)

我认为你可以动态指向客户服务。服务参考是您服务的代理。

我相信您可以使用以Url作为参数的服务引用(服务代理)的其他构造函数。

e.g。 YourServiceProxy(“目标网址”)

如果您用户更改/编辑服务URL,我认为您可以启动其他服务代理实例,该实例采用用户指定的URL。

答案 1 :(得分:0)

要在运行时动态更改Web服务的URL:
在config.sys(或app.config)文件中,查找xml标记< endpoint。 。 。取代。
复制整个端点标记及其内容,并将原始文本下方的副本粘贴到同一文件中。
将新副本的name属性更改为新名称(假设此示例的新名称为“NewName”);将地址属性更改为新URL。
在代码中,像以前一样创建服务引用,但在“new”语句中,为类构造函数使用一个参数,新名称:
ServiceReference1.MyClient cl = new ServiceReference1.MyClient(“NewName”);
然后像以前一样调用ServiceReferences方法:
String sRes = cl.MyMethod(myParm);

这也适用于Visual Basic,只需在代码中使用VB语法。