2009-08-14 17 views
3

Ich habe einen Dienst, der in WAS gehostet wird. Ich versuche, diesen Service mit Abhängigkeiten zu versehen, habe aber Schwierigkeiten, zu finden, wo das zu tun ist. In einem WCF-Dienst, der in IIS gehostet wird, können Sie das Ereignis "application_onstart" zum Instanziieren des Burgcontainers verwenden. Dies ist jedoch in meinem Szenario nicht verfügbar. Also, ich versuche, eine benutzerdefinierte Host-Fabrik zu erstellen wie folgt:WCF Schloss Windsor und WAS

public override ServiceHostBase CreateServiceHost(string constructorString, Uri[] baseAddresses) 
     { 
      container = new WindsorContainer(); 
      container.Register(Component.For<IMyDependency>().ImplementedBy<MyDependency>()); 
      DefaultServiceHostFactory.RegisterContainer(container.Kernel); 

      var service = container.Resolve(constructorString); 
      ServiceHost serviceHost = new ServiceHost(service, baseAddresses); 

      return serviceHost; 
     } 

Dies funktioniert gut mit Singletons WCF-Dienste, aber wie bekommt man diese mit arbeiten pro-Anruf? Bei Nicht-Singleton-Diensten wird erwartet, dass ein Typ an den ServiceHost-Konstruktor und nicht an einen tatsächlichen Dienst übergeben wird. Wenn ich dies jedoch tue, sucht der Dienst nach einem parameterlosen Konstruktor, nicht nach der DI-Version.

Irgendwelche Ideen, wie man das alles funktioniert?

Dank

Antwort

2

WCF Facility tun, dass (und viel mehr) für Sie.

+0

Danke, ich habe WCF Facility arbeiten mit WCF-Dienste in IIS aktiviert, aber nicht WAS. In der Vergangenheit habe ich den Dienst einfach an die Wcf-Fabrik angeschlossen und dann den Container in der global.asax hinzugefügt. Allerdings kann ich den Container in global.asax nicht mit WAS verbinden, wie würdest du das alles zusammensetzen? –

+0

Die Antwort ist in AppInitialize() einhängen Dank –

+0

cool, froh, dass Sie es geschafft haben. Wenn Sie Fragen zu Castle haben, fragen Sie am besten in der Diskussionsliste: http://groups.google.com/group/castle-project-users –

Verwandte Themen