2009-08-14 21 views
3

私はWASでホストされているサービスを持っています。このサービスに依存関係を注入しようとしていますが、これを行う場所を見つけるのが難しいです。 IISでホストされているWCFサービスでは、城のコンテナをインスタンス化するためにapplication_onstartイベントを使用できますが、これは私のシナリオでは使用できません。だから、私はそうのようなカスタムホストファクトリを作成しようとしています:WCF城ウィンザーと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; 
     } 

これはシングルトンWCFサービスと正常に動作しますが、どのようにあなたは、これは、呼び出しごとで動作するのですか?非シングルトンサービスでは、実際のサービスではなくServiceHostコンストラクターに型が渡されることを期待しています。しかし、私がこれを行うと、サービスがスピンアップするとき、DIバージョンではなく、パラメータのないコンストラクタのみが検索されます。

これをすべて稼働させる方法に関するアイデアはありますか?

おかげ

答えて

2

WCF Facilityはあなたのために(そして多くの)ことを行います。

+0

ありがとうございます。以前はIISでアクティブ化されたWCFサービスでWCFファシリティを使用していましたが、WASでは使用できませんでした。以前は、サービスをWcfファクトリに接続し、次にglobal.asaxにコンテナを追加しました。しかし、global.asaxのコンテナをWASに接続することはできません。どうすればこのようにまとめることができますか? –

+0

答えはAppInitialize()にフックすることです ありがとう –

+0

あなたはそれがうまくいってうれしいです。城に関する質問がある場合は、http://groups.google.com/group/castle-project-usersのディスカッションリストにお尋ねください。 –

関連する問題