《WCF客户端动态设置WCF服务器主机.doc》由会员分享,可在线阅读,更多相关《WCF客户端动态设置WCF服务器主机.doc(10页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、.1/10WCFWCF 客户端动态设置客户端动态设置 WCFWCF 服务器主机的地址的方法参考服务器主机的地址的方法参考,可以连可以连接多个相同接多个相同 WCFWCF 主机的方法主机的方法最近做一个项目,需要在客户端灵活配置连接到哪个服务器的功能,例如客户端是一个,现在想连接 A 服务器就连 A 服务器,想连接 B 服务器就连接 B 服务器,当然不需要手动修改配置文件,直接通过程序来实现 WCF 目标主机的配置功能。参考核心代码如下:/-/All Rights Reserved,Copyright(C)2011,Hairihan TECH,Ltd./-using System.Service
2、Model;namespace DotNet.WCFClientusing DotNet.IService;using DotNet.Utilities;/ServiceFactory/本地服务的具体实现接口/修改纪录/2011.07.03 版本:2.0 JiRiGaLa 可以动态指定服务器地址的调用方法。/2009.09.20 版本:1.0 JiRiGaLa 创建。.2/10/版本:2.0/JiRiGaLa/2011.07.03/public class ServiceFactory:IServiceFactoryprivate string host=string.Empty;/主机地址/
3、Host=192.168.0.122;/public string Hostgetreturn host;sethost=value;private int port=0;/端口号/.3/10public int Portgetreturn port;setport=value;public ServiceFactory()/初始化服务/public void InitService()/动态设定 WCF 主机地址端口的方法/主机地址.4/10/主机地址public virtual EndpointAddress GetHotsUrl(EndpointAddress address)/若当前配
4、置都是空的,就不用生成新的 URL 了。if(string.IsNullOrEmpty(Host)&(Port=0)return address;/判断当前配置的情况string endpointAddress=string.Empty;if(string.IsNullOrEmpty(Host)Host=address.Uri.Host;if(Port=0)Port=address.Uri.Port;endpointAddress=address.Uri.Scheme+:/+Host+:+Port.ToString()+address.Uri.LocalPath;address=new End
5、pointAddress(endpointAddress);return address;.5/10public virtual ISequenceService CreateSequenceService()ChannelFactory channelFactory=new ChannelFactory(DotNet.Service.SequenceService);channelFactory.Endpoint.Address=GetHotsUrl(channelFactory.Endpoint.Address);/加强安全验证防止未授权匿名调用channelFactory.Credentials.UserName.UserName=BaseSystemInfo.ServiceUserName;channelFactory.Credentials.UserName.Password=BaseSystemInfo.ServicePassword;ISequenceService proxy=channelFactory.CreateChannel();return proxy;复制代码配套的配置文件参考如下:.6/10.10/10复制代码
限制150内