2013-01-08 17 views
5

robie następująceJak przekazać parametry do 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(); 
    } 

trzeba przekazać parametr do Serwisu i nie mogę dowiedzieć się, jak to zrobić. Spojrzałem na How do I pass values to the constructor on my wcf service?, ale nie mogłem się z tym pogodzić. Dzięki

+0

Czy można po prostu odczytać z pliku app.config przy użyciu ConfigurationManager.AppSettings [] w samej usłudze zamiast przekazywać do konstruktora? – TylerOhlsen

Odpowiedz

17

Jeśli dobrze rozumiem, chcesz przekazać parametry do konstruktora klasy wykonania usługi. Możesz to zrobić przez passing an instance of the service class to the ServiceHost constructor, zamiast jego typu. Czyli:

// Create the service instance 
var instance = new SmeediServiceHost("some parameters"); 

// Define the service host using the above instance 
this._smeediPluginServiceHost = new ServiceHost(instance, smeediServiceUri); 

Uwaga - za pomocą tej metody oznacza używasz singleton instancji klasy usług. Jeśli potrzebujesz nowej instancji na sesję lub na żądanie, rozważ skorzystanie z ServiceHostFactory zgodnie z opisem w this answer.

+0

+1. Dodatkowym przydatnym artykułem jest: [WCF Service Instancing] (http://devproconnections.com/net-framework/wcf-service-instancing) – informatik01

Powiązane problemy