在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
//动态调用wcf方法
string url = "http://localhost:54379/ServiceWCF.svc" ;
IDoubleService proxy = WcfInvokeFactory.CreateServiceByUrl<IDoubleService>(url); int result = proxy.Add(1, 3);
//wcf
WCF服务工厂 创建方法public class WcfInvokeFactory
{
#region WCF服务工厂
public static T CreateServiceByUrl<T>( string url)
{
return CreateServiceByUrl<T>(url, "basicHttpBinding" );
}
public static T CreateServiceByUrl<T>( string url, string bing)
{
try
{
if ( string .IsNullOrEmpty(url)) throw new NotSupportedException( "This url is not Null or Empty!" );
EndpointAddress address = new EndpointAddress(url);
Binding binding = CreateBinding(bing);
ChannelFactory<T> factory = new ChannelFactory<T>(binding, address);
return factory.CreateChannel();
}
catch (Exception ex)
{
throw new Exception( "创建服务工厂出现异常." );
}
}
#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, 30, 0);
ws.OpenTimeout = new TimeSpan(0, 30, 0);
ws.ReceiveTimeout = new TimeSpan(0, 30, 0);
ws.SendTimeout = new TimeSpan(0, 30, 0);
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() == "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
}
|
请发表评论