开发环境: VS2005(C#)
在客户程序中通过VS引用Web Service时,必须指定Web Service的URL地址。有时,相同的Web Service部署在多个服务器上,以防其中某些服务器出现故障导致Web Service不可用。 这样就要在代码中动态设置Web Service的URL地址,如何实现呢?
经过研究VS 的Add Web Reference…操作所生成的Web Serviceo类(myService )的.cs文件(呵呵,有点拗口 ), 发现其中的构造函数有玄机。
public partial class myService : System.Web.Services.Protocols.SoapHttpClientProtocol
{
……
public myService ()
{
this.Url = "http://192.168.1.88/ASPtest/service.asmx"; //本人所引用Web Service地址
}
……
}
在MSDN中查了下SoapHttpClientProtocol 类,其有属性Url :Gets or sets the base URL of the XML Web service the client is requesting. 意即用来设置或获取客户调用的Web Service地址。
OK,发现了这个玄机,我们就可以用来动态设置
myService service = new myService ();
service.Url = “http://192.168.1.22/ASPtest/service.asmx ”; //改变Web Service地址
当然你可以把URL保存在配置文件中,不必硬编码。