Как передать параметры в 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 как описано в ответ.