Как передать параметры в ServiceHost
Я делаю следующее
//Define the service host
this._smeediPluginServiceHost = new ServiceHost(typeof(SmeediServiceHost), smeediServiceUri);
this._smeediPluginServiceHost.AddServiceEndpoint(typeof(ISmeediServiceHost), GetBinding(), smeediServiceUri);
SetupAndStartWebService(_smeediPluginServiceHost);
private void SetupAndStartWebService(ServiceHost serviceHost, ServiceDiscoveryBehavior serviceDiscoveryBehavior = null)
{
//Define service behaviours
ServiceMetadataBehavior serviceMetadataBehavior = new ServiceMetadataBehavior();
serviceMetadataBehavior.HttpGetEnabled = true;
//Add the behaviours to the service
serviceHost.Description.Behaviors.Add(serviceMetadataBehavior);
if (serviceDiscoveryBehavior != null)
serviceHost.Description.Behaviors.Add(serviceDiscoveryBehavior);
serviceHost.Open();
}
Мне нужно передать параметр службе, и я не могу понять, как это сделать. Я посмотрел на как передать значения конструктору в моей службе wcf? но я не мог сообразить. Спасибо
1 ответов
Если я правильно понимаю, вы хотите передать параметры конструктору вашего класса реализации службы. Вы можете к этому передает экземпляр класса обслуживания ServiceHost
конструктор, вместо своего типа. То есть:
// Create the service instance
var instance = new SmeediServiceHost("some parameters");
// Define the service host using the above instance
this._smeediPluginServiceHost = new ServiceHost(instance, smeediServiceUri);
осторожностью - использование этого подхода означает, что вы используете одноэлементный экземпляр класса service. Если вам нужен новый экземпляр на сеанс или на запрос, рассмотрите возможность использования ServiceHostFactory
как описано в ответ.