• C# 根据WCF 的url动态调用WCF


    #region Wcf服务工厂
    public static T CreateWCFServiceByURL<T>(string url)
            {
                return CreateWCFServiceByURL<T>(url, "basichttpbinding");
            }
      #endregion
            public static T CreateWCFServiceByURL<T>(string url, string bing)
            {
                if (string.IsNullOrEmpty(url))
                    throw new NotSupportedException("url 不能为空!");
                EndpointAddress address = new EndpointAddress(url);
                System.ServiceModel.Channels.Binding binding = CreateBinding(bing);
                ChannelFactory<T> factory = new ChannelFactory<T>(binding, address);
                return factory.CreateChannel();
            }
            #endregion
            #region 创建传输协议
            /// <summary>
            /// 创建传输协议
            /// </summary>
            /// <param name="binding">传输协议名称</param>
            /// <returns></returns>
            private static System.ServiceModel.Channels.Binding CreateBinding(string binding)
            {
                System.ServiceModel.Channels.Binding bindinginstance = null;
                if (binding.ToLower() == "basichttpbinding")
                {
                    BasicHttpBinding ws = new BasicHttpBinding();
                    ws.MaxBufferSize = 2147483647;
                    ws.MaxBufferPoolSize = 2147483647;
                    ws.MaxReceivedMessageSize = 2147483647;
                    ws.ReaderQuotas.MaxStringContentLength = 2147483647;
                    ws.CloseTimeout = new TimeSpan(0, 20, 0);
                    ws.OpenTimeout = new TimeSpan(0, 20, 0);
                    ws.ReceiveTimeout = new TimeSpan(0, 20, 0);
                    ws.SendTimeout = new TimeSpan(0, 20, 0);
    
                    bindinginstance = ws;
                }
                else if (binding.ToLower() == "netnamedpipebinding")
                {
                    NetNamedPipeBinding ws = new NetNamedPipeBinding();
                    ws.MaxReceivedMessageSize = 65535000;
                    bindinginstance = ws;
                }
                else if (binding.ToLower() == "netpeertcpbinding")
                {
                    NetPeerTcpBinding ws = new NetPeerTcpBinding();
                    ws.MaxReceivedMessageSize = 65535000;
                    bindinginstance = ws;
                }
                else if (binding.ToLower() == "nettcpbinding")
                {
                    NetTcpBinding ws = new NetTcpBinding();
                    ws.MaxReceivedMessageSize = 65535000;
                    ws.Security.Mode = SecurityMode.None;
                    bindinginstance = ws;
                }
                else if (binding.ToLower() == "wsdualhttpbinding")
                {
                    WSDualHttpBinding ws = new WSDualHttpBinding();
                    ws.MaxReceivedMessageSize = 65535000;
    
                    bindinginstance = ws;
                }
                else if (binding.ToLower() == "wsfederationhttpbinding")
                {
                    WSFederationHttpBinding ws = new WSFederationHttpBinding();
                    ws.MaxReceivedMessageSize = 65535000;
                    bindinginstance = ws;
                }
                else if (binding.ToLower() == "wshttpbinding")
                {
                    WSHttpBinding ws = new WSHttpBinding(SecurityMode.None);
                    ws.MaxReceivedMessageSize = 65535000;
                    ws.Security.Message.ClientCredentialType = System.ServiceModel.MessageCredentialType.Windows;
                    ws.Security.Transport.ClientCredentialType = System.ServiceModel.HttpClientCredentialType.Windows;
                    bindinginstance = ws;
                }
                return bindinginstance;
    
            }
  • 相关阅读:
    是否
    联想z510硬件升级记录
    KAL1 LINUX 官方文档之介绍 Kali NetHunter的历史
    KAL1 LINUX 官方文档之介绍 Kali出版发布
    个人声明!个人声明!个人声明!
    java报错 错误: 无法访问未命名程序包
    不同编程语言的a+b=c表示方法
    KAL1 LINUX 官方文档之介绍 什么是Kali Linux?
    kali相关地址
    KAL1 LINUX 官方文档之介绍 Kali镜像预览
  • 原文地址:https://www.cnblogs.com/yuanshuo/p/14884182.html
Copyright © 2020-2023  润新知