Как передать параметры в 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?, но я не мог обойти это. Спасибо


person Toby Holland    schedule 08.01.2013    source источник
comment
Не могли бы вы просто прочитать файл app.config с помощью ConfigurationManager.AppSettings [] внутри самой службы вместо передачи в конструктор?   -  person TylerOhlsen    schedule 08.01.2013


Ответы (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);

Внимание. Такой подход означает, что вы используете одноэлементный экземпляр класса обслуживания. Если вам нужен новый экземпляр для сеанса или для запроса, рассмотрите возможность использования ServiceHostFactory, как описано в этом ответе.

person McGarnagle    schedule 11.05.2013
comment
+1. В качестве дополнения, полезная статья: Создание экземпляров службы WCF - person informatik01; 19.11.2014