Wcf 如何将参数传递给ServiceHost

Wcf 如何将参数传递给ServiceHost,wcf,service,parameters,servicehost,Wcf,Service,Parameters,Servicehost,我正在做以下工作 //Define the service host this._smeediPluginServiceHost = new ServiceHost(typeof(SmeediServiceHost), smeediServiceUri); this._smeediPluginServiceHost.AddServiceEndpoint(typeof(ISmeediServiceHost), GetBinding(), smeediService

我正在做以下工作

 //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();
    }  

我需要向服务传递一个参数,但我不知道如何传递。我已经看过了,但还是想不起来。谢谢

如果我理解正确,您希望将参数传递给服务实现类的构造函数。您可以通过,而不是它的类型来创建它。即:

// 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 HealthPo工厂,如

中所描述的。您可以从App.CONFIG文件中读取使用服务本身中的配置管理器?AppStase[],而不是传递给构造函数?+ 1。作为补充,有用的文章: