You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
94 lines
3.0 KiB
94 lines
3.0 KiB
using System;
|
|
using System.ServiceModel;
|
|
using System.ServiceModel.Description;
|
|
using System.Text;
|
|
|
|
namespace SiaSun.LMS.Common
|
|
{
|
|
public class WCFService
|
|
{
|
|
private string _Url;
|
|
private string _Status;
|
|
public ServiceHost ServiceHost;
|
|
public object S_Service;
|
|
public Type InterfaceType;
|
|
|
|
public string Url
|
|
{
|
|
get { return _Url; }
|
|
set { _Url = value; }
|
|
}
|
|
public string Status
|
|
{
|
|
get { return _Status; }
|
|
set { _Status = value; }
|
|
}
|
|
|
|
public WCFService(string sURL, object service)
|
|
{
|
|
this.ServiceHost = null;
|
|
this.S_Service = service;
|
|
this.InterfaceType = service.GetType().GetInterfaces()[0];
|
|
this._Url = sURL;
|
|
this._Status = "停止";
|
|
}
|
|
|
|
public void StartService()
|
|
{
|
|
if (this.Status.Equals("停止"))
|
|
{
|
|
this.ServiceHost = new ServiceHost(this.S_Service, new Uri(this.Url));
|
|
this.ServiceHost.AddServiceEndpoint(this.InterfaceType, WCFService.GetBasicHttpBinding(), "");
|
|
this.ServiceHost.Description.Behaviors.Add(new ServiceThrottlingBehavior()
|
|
{
|
|
MaxConcurrentCalls = 3000,
|
|
MaxConcurrentSessions = 3000
|
|
});
|
|
this.ServiceHost.Description.Behaviors.Add(new ServiceMetadataBehavior()
|
|
{
|
|
HttpGetEnabled = true
|
|
});
|
|
this.ServiceHost.Open();
|
|
this.Status = "启动";
|
|
}
|
|
}
|
|
|
|
public void StopService()
|
|
{
|
|
if (this.Status.Equals("启动"))
|
|
{
|
|
if (this.ServiceHost != null)
|
|
{
|
|
this.ServiceHost.Close();
|
|
this.ServiceHost = null;
|
|
}
|
|
this.Status = "停止";
|
|
}
|
|
}
|
|
|
|
public static BasicHttpBinding GetBasicHttpBinding()
|
|
{
|
|
BasicHttpBinding bhb = new BasicHttpBinding
|
|
{
|
|
CloseTimeout = new TimeSpan(0, 5, 0),
|
|
OpenTimeout = new TimeSpan(0, 5, 0),
|
|
ReceiveTimeout = new TimeSpan(0, 5, 0),
|
|
SendTimeout = new TimeSpan(0, 5, 0),
|
|
MaxBufferSize = int.MaxValue,
|
|
MaxBufferPoolSize = int.MaxValue,
|
|
MaxReceivedMessageSize = int.MaxValue,
|
|
TextEncoding = Encoding.UTF8,
|
|
MessageEncoding = WSMessageEncoding.Text
|
|
};
|
|
bhb.ReaderQuotas.MaxArrayLength = int.MaxValue;
|
|
bhb.ReaderQuotas.MaxStringContentLength = int.MaxValue;
|
|
bhb.ReaderQuotas.MaxBytesPerRead = int.MaxValue;
|
|
return bhb;
|
|
}
|
|
|
|
public static T CreateChannel<T>(string sURL)
|
|
{
|
|
return ChannelFactory<T>.CreateChannel(WCFService.GetBasicHttpBinding(), new EndpointAddress(sURL));
|
|
}
|
|
}
|
|
}
|