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

パラメータを Service に渡す必要がありますが、その方法がわかりません。私は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で説明されているようにを使用することを検討してください。

于 2013-05-11T00:01:06.773 に答える