123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- using System;
- using System.ServiceModel;
- using System.ServiceModel.Channels;
- using System.Configuration;
- namespace IntelligentControlForsx
- {
- /// <summary>
- /// 动态调用WCF的工具类库
- /// </summary>
- public class AlertServiceClientFactory
- {
- public static AlertServiceClient CreateAlertServiceClient()
- {
- string url = ConfigurationManager.AppSettings["WCFServiceUrl"]; // "http://localhost:8733/GDNXFD/AlertService/";
- string bing = ConfigurationManager.AppSettings["WCFServiceBinding"]; //"basichttpbinding";
- EndpointAddress address = new EndpointAddress(url);
- Binding binding = CreateBinding(bing);
- return new AlertServiceClient(binding, address);
- }
- #region Wcf服务工厂
- public static T CreateWCFServiceByURL<T>(string url)
- {
- return CreateWCFServiceByURL<T>(url, "wsHttpBinding");
- }
- public static T CreateWCFServiceByURL<T>(string url, string bing)
- {
- if (string.IsNullOrEmpty(url)) throw new NotSupportedException("this url isn`t Null or Empty!");
- EndpointAddress address = new EndpointAddress(url);
- 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 Binding CreateBinding(string binding)
- {
- 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, 10, 0);
- ws.OpenTimeout = new TimeSpan(0, 10, 0);
- ws.ReceiveTimeout = new TimeSpan(0, 10, 0);
- ws.SendTimeout = new TimeSpan(0, 10, 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() == "webhttpbinding")
- {
- //WebHttpBinding ws = new WebHttpBinding();
- //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;
- }
- #endregion
- }
- }
|