7

我正在做以下事情

 //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 服务上的构造函数?但无法理解它。谢谢

4

1 回答 1

20

如果我理解正确,您想将参数传递给服务实现类的构造函数。您可以通过将服务类实例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中描述的a 。

于 2013-05-11T00:01:06.773 回答