2011-07-15 5 views
2

私はNinject 2.2.1.4とNinject.Extensions.Wcf 2.2.0.4を使用しています。私のサービスは、以下の属性で飾られているシングルトンサービスでNinject WCF拡張機能を使用するにはどうすればよいですか?

:上記の属性を使用して

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)] 

、私はエラーが表示されます。

"The service type provided could not be loaded as a service because it does not have a default (parameter-less) constructor. To fix the problem, add a default constructor to the type, or pass an instance of the type to the host."

私は期待通りNinjectの動作属性を削除した場合。

いくつかの調査をした後、サービスがシングルトンとしてマークされているため、ServiceHostによってパラメータなしのコンストラクタ、つまりエラーメッセージが自動的に作成されることを理解しています。この問題を解決するには、サービスオブジェクトを自分で作成し、ninjectを使用して解決してから、シングルトンオブジェクトをServiceHostに渡して使用する必要があります。私はそれをどうやって行うのか分からない。

私の考えは、オーバーロードコンストラクタ使用して、サービスオブジェクトの私のインスタンスにNinjectServiceHostをバインドすることだったので、私はWCF拡張ソースを見て、私はNinjectServiceHostはのServiceHostから継承することを参照してください。私はありません

public NinjectServiceHost(object singletonInstance) 
     : base(singletonInstance) 
    { 
    } 

をそれが正しいかどうか、それが正しいかどうか、どうやってどこにどこに正しくバインドするかによって、ServiceHostは私のインスタンスに送られます。

提案がありますか?ありがとう。

答えて

1

ベータ版で暮らすことができるなら、2.3.xにアップデートすることをお勧めします。これは、IISがホストするシングルトンサービスをサポートしています。ギブスの例も参照してください

+0

ありがとう、私はそれを調べます。それがベータ版から出てくると思っていますか? – Mike

+0

いいえ、私は日付を指定していません。次のリリースでどれくらいの作業が残っているかはわかりますが、Ninjectに費やす時間については全く分かりません。 しかし、WCFに関しては何も変更すべきではありません。 WCFの他のアセンブリに追加されるのは、InRequestScopeのXMLおよび表記拡張のサポートのみです。 –

関連する問題