WCF客户端动态设置WCF服务器主机.docx

上传人:b****1 文档编号:10900374 上传时间:2023-05-28 格式:DOCX 页数:7 大小:15.97KB
下载 相关 举报
WCF客户端动态设置WCF服务器主机.docx_第1页
第1页 / 共7页
WCF客户端动态设置WCF服务器主机.docx_第2页
第2页 / 共7页
WCF客户端动态设置WCF服务器主机.docx_第3页
第3页 / 共7页
WCF客户端动态设置WCF服务器主机.docx_第4页
第4页 / 共7页
WCF客户端动态设置WCF服务器主机.docx_第5页
第5页 / 共7页
WCF客户端动态设置WCF服务器主机.docx_第6页
第6页 / 共7页
WCF客户端动态设置WCF服务器主机.docx_第7页
第7页 / 共7页
亲,该文档总共7页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

WCF客户端动态设置WCF服务器主机.docx

《WCF客户端动态设置WCF服务器主机.docx》由会员分享,可在线阅读,更多相关《WCF客户端动态设置WCF服务器主机.docx(7页珍藏版)》请在冰点文库上搜索。

WCF客户端动态设置WCF服务器主机.docx

WCF客户端动态设置WCF服务器主机

WCF客户端动态设置WCF服务器主机的地址的方法参考,可以连接多个相同WCF主机的方法

最近做一个项目,需要在客户端灵活配置连接到哪个服务器的功能,例如客户端是一个,现在想连接A服务器就连A服务器,想连接B服务器就连接B服务器,当然不需要手动修改配置文件,直接通过程序来实现WCF目标主机的配置功能。

  参考核心代码如下:

//--------------------------------------------------------------------

// All Rights Reserved , Copyright (C) 2011 , Hairihan TECH, Ltd. 

//--------------------------------------------------------------------

using System.ServiceModel;

namespace DotNet.WCFClient

{

    using DotNet.IService;

    using DotNet.Utilities;

    /// 

    /// ServiceFactory

    /// 本地服务的具体实现接口

    /// 

    /// 修改纪录

    /// 

    ///        2011.07.03 版本:

2.0 JiRiGaLa 可以动态指定服务器地址的调用方法。

    ///        2009.09.20 版本:

1.0 JiRiGaLa 创建。

    ///        

    /// 版本:

2.0

    ///

    /// 

    ///        JiRiGaLa

    ///        2011.07.03

    ///  

    /// 

    public class ServiceFactory :

 IServiceFactory

    {

        private string host = string.Empty;

        /// 

        /// 主机地址

        /// Host = "192.168.0.122";

        /// 

        public string Host

        {

            get

            {

                return host;

            }

            set

            {

                host = value;

            }

        }

        private int port = 0;

        /// 

        /// 端口号

        /// 

        public int Port

        {

            get

            {

                return port;

            }

            set

            {

                port = value;

            }

        }

        public ServiceFactory()

        {

        }

        /// 

        /// 初始化服务

        /// 

        public void InitService()

        {

        }

        /// 

        /// 动态设定WCF主机地址端口的方法

        /// 

        /// 主机地址

        /// 主机地址

        public virtual EndpointAddress GetHotsUrl(EndpointAddress address)

        {

            // 若当前配置都是空的,就不用生成新的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 EndpointAddress(endpointAddress);

            return address;

        }

        public 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;

        }

       }

    }

}

复制代码

  配套的配置文件参考如下:

xml version="1.0"?

>

  

    

      

//jirigala-PC:

8888/DotNet.Service/ExceptionService/" binding="netTcpBinding" bindingConfiguration="netTcpBindingSmiple" contract="DotNet.IService.IExceptionService" name="DotNet.Service.ExceptionService">

      

//jirigala-PC:

8888/DotNet.Service/" binding="netTcpBinding" bindingConfiguration="netTcpBindingSmiple" contract="DotNet.IService.I" name="DotNet.Service.">

      

//jirigala-PC:

8888/DotNet.Service/FolderService/" binding="netTcpBinding" bindingConfiguration="netTcpBindingSmiple" contract="DotNet.IService.IFolderService" name="DotNet.Service.FolderService">

      

//jirigala-PC:

8888/DotNet.Service/ItemDetailsService/" binding="netTcpBinding" bindingConfiguration="netTcpBindingSmiple" contract="DotNet.IService.IItemDetailsService" name="DotNet.Service.ItemDetailsService">

      

//jirigala-PC:

8888/DotNet.Service/ItemsService/" binding="netTcpBinding" bindingConfiguration="netTcpBindingSmiple" contract="DotNet.IService.IItemsService" name="DotNet.Service.ItemsService">

      

//jirigala-PC:

8888/DotNet.Service/LogOnService/" binding="netTcpBinding" bindingConfiguration="netTcpBindingSmiple" contract="DotNet.IService.ILogOnService" name="DotNet.Service.LogOnService">

      

//jirigala-PC:

8888/DotNet.Service/LogService/" binding="netTcpBinding" bindingConfiguration="netTcpBindingSmiple" contract="DotNet.IService.ILogService" name="DotNet.Service.LogService">

      

//jirigala-PC:

8888/DotNet.Service/MessageService/" binding="netTcpBinding" bindingConfiguration="netTcpBindingSmiple" contract="DotNet.IService.IMessageService" name="DotNet.Service.MessageService">

      

//jirigala-PC:

8888/DotNet.Service/ModuleService/" binding="netTcpBinding" bindingConfiguration="netTcpBindingSmiple" contract="DotNet.IService.IModuleService" name="DotNet.Service.ModuleService">

      

//jirigala-PC:

8888/DotNet.Service/OrganizeService/" binding="netTcpBinding" bindingConfiguration="netTcpBindingSmiple" contract="DotNet.IService.IOrganizeService" name="DotNet.Service.OrganizeService">

      

//jirigala-PC:

8888/DotNet.Service/ParameterService/" binding="netTcpBinding" bindingConfiguration="netTcpBindingSmiple" contract="DotNet.IService.IParameterService" name="DotNet.Service.ParameterService">

      

//jirigala-PC:

8888/DotNet.Service/PermissionItemService/" binding="netTcpBinding" bindingConfiguration="netTcpBindingSmiple" contract="DotNet.IService.IPermissionItemService" name="DotNet.Service.PermissionItemService">

      

//jirigala-PC:

8888/DotNet.Service/PermissionService/" binding="netTcpBinding" bindingConfiguration="netTcpBindingSmiple" contract="DotNet.IService.IPermissionService" name="DotNet.Service.PermissionService">

      

//jirigala-PC:

8888/DotNet.Service/RoleService/" binding="netTcpBinding" bindingConfiguration="netTcpBindingSmiple" contract="DotNet.IService.IRoleService" name="DotNet.Service.RoleService">

      

//jirigala-PC:

8888/DotNet.Service/SequenceService/" binding="netTcpBinding" bindingConfiguration="netTcpBindingSmiple" contract="DotNet.IService.ISequenceService" name="DotNet.Service.SequenceService">

      

//jirigala-PC:

8888/DotNet.Service/StaffService/" binding="netTcpBinding" bindingConfiguration="netTcpBindingSmiple" contract="DotNet.IService.IStaffService" name="DotNet.Service.StaffService">

      

//jirigala-PC:

8888/DotNet.Service/UserService/" binding="netTcpBinding" bindingConfiguration="netTcpBindingSmiple" contract="DotNet.IService.IUserService" name="DotNet.Service.UserService">

      

//jirigala-PC:

8888/DotNet.Service/BusinessDbHelperService/" binding="netTcpBinding" bindingConfiguration="netTcpBindingSmiple" contract="DotNet.IService.IDbHelperService" name="DotNet.Service.BusinessDbHelperService">

      

//jirigala-PC:

8888/DotNet.Service/UserCenterDbHelperService/" binding="netTcpBinding" bindingConfiguration="netTcpBindingSmiple" contract="DotNet.IService.IDbHelperService" name="DotNet.Service.UserCenterDbHelperService">

      

//jirigala-PC:

8888/DotNet.Service/WorkFlowActivityAdminService/" binding="netTcpBinding" bindingConfiguration="netTcpBindingSmiple" contract="DotNet.IService.IWorkFlowActivityAdminService" name="DotNet.Service.WorkFlowActivityAdminService">

      

//jirigala-PC:

8888/DotNet.Service/WorkFlowCurrentService/" binding="netTcpBinding" bindingConfiguration="netTcpBindingSmiple" contract="DotNet.IService.IWorkFlowCurrentService" name="DotNet.Service.WorkFlowCurrentService">

      

//jirigala-PC:

8888/DotNet.Service/WorkFlowProcessAdminService/" binding="netTcpBinding" bindingConfiguration="netTcpBindingSmiple" contract="DotNet.IService.IWorkFlowProcessAdminService" name="DotNet.Service.WorkFlowProcessAdminService">

      

//jirigala-PC:

8888/DotNet.Service/TableColumnsService/" binding="netTcpBinding" bindingConfiguration="netTcpBindingSmiple" contract="DotNet.IService.ITableColumnsService" name="DotNet.Service.TableColumnsService">

    

    

      

        

00:

05" openTimeout="00:

00:

02" receiveTimeout="10:

10:

10" sendTimeout="00:

00:

30">

          

            

          

        

      

    

  

复制代码

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2