/// <summary>
/// 创建服务
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="url"></param>
/// <param name="bing"></param>
/// <returns></returns>
public static T CreateServiceByUrl<T>(string url, string bing)
{
EndpointAddress address = new EndpointAddress(url);
System.ServiceModel.Channels.Binding binding = CreateBinding(bing);
ChannelFactory<T> factory = new ChannelFactory<T>(binding, address);
return factory.CreateChannel();
}
/// <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 basicHttpBinding = new BasicHttpBinding();
basicHttpBinding.MaxBufferSize = 2147483647;
basicHttpBinding.MaxBufferPoolSize = 2147483647;
basicHttpBinding.MaxReceivedMessageSize = 2147483647;
basicHttpBinding.ReaderQuotas.MaxStringContentLength = 2147483647;
basicHttpBinding.CloseTimeout = new TimeSpan(0, 30, 0);
basicHttpBinding.OpenTimeout = new TimeSpan(0, 30, 0);
basicHttpBinding.ReceiveTimeout = new TimeSpan(0, 30, 0);
basicHttpBinding.SendTimeout = new TimeSpan(0, 30, 0);
bindinginstance = basicHttpBinding;
}
else if (binding.ToLower() == "nettcpbinding")
{
NetTcpBinding netTcpBinding = new NetTcpBinding();
netTcpBinding.MaxReceivedMessageSize = 65535000;
netTcpBinding.Security.Mode = SecurityMode.None;
bindinginstance = netTcpBinding;
}
else if (binding.ToLower() == "wshttpbinding")
{
WSHttpBinding wSHttpBinding = new WSHttpBinding(SecurityMode.None);
wSHttpBinding.MaxReceivedMessageSize = 65535000;
wSHttpBinding.Security.Message.ClientCredentialType = System.ServiceModel.MessageCredentialType.Windows;
wSHttpBinding.Security.Transport.ClientCredentialType = System.ServiceModel.HttpClientCredentialType.Windows;
bindinginstance = wSHttpBinding;
}
return bindinginstance;
}
如果你对Revit二次开发感兴趣,欢迎关注我的公众号一起学习~