在客户程序中通过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保存在配置文件中,不必硬编码。
hostname(主机名)
是指存放资源的服务器的域名系统(DNS) 主机名或 IP 地址。有时,在主机名前也可以包含连接到服务器所需的用户名和密码(格式:username:password@hostname)。
port(端口号)
整数,可选,省略时使用方案的默认端口,各种传输协议都有默认的端口号,如http的默认端口为80。如果输入时省略,则使用默认端口号。有时候出于安全或其他考虑,可以在服务器上对端口进行重定义,即采用非标准端口号,此时,URL中就不能省略端口号这一项。
path(路径)
由零或多个“/”符号隔开的字符串,一般用来表示主机上的一个目录或文件地址。
parameters(参数)
这是用于指定特殊参数的可选项。
query(查询)
可选,用于给动态网页(如使用CGI、ISAPI、PHP/JSP/ASP/ASP。NET等技术制作的网页)传递参数,可有多个参数,用“&”符号隔开,每个参数的名和值用“=”符号隔开。