4

NinjectwithWCFでタイプを接続する正しい方法は何ですか。WCF拡張機能があり、Ninject自体がNuGetを介してWCFプロジェクトに追加されています。しかし、私は次に何をすべきかで立ち往生しています。ServiceHostFactoryの代わりにglobal.asaxを使用する古い例に遭遇しているようです。ServiceHostFactoryメソッドは最適ですか?

WCFでのNinjectの使用法の現在の最良の例はどこにありますか?NinjectWCF拡張機能が提供するオブジェクトを使用して配線を行う方法がわかりません。

詳細:
ウォークスルーしてみ ました-https ://github.com/ninject/ninject.extensions.wcf/tree/Maintenance_2.2/src/Examples/WcfTimeService

私のプロジェクトはGlobal.asax.csのNinjectWcfApplicationを解決できませんでした。
これが、これが最新のNinjectと互換性がなくなったか、最新ではないと思った理由です。

4

3 に答える 3

4

サービスアクティベーションを使用している場合(ディスク上に.svcファイルがない場合)、web.configでninjectホスティングファクトリをセットアップします

<serviceHostingEnvironment>
      <serviceActivations>
        <add relativeAddress="MyService.svc" service="MyService" factory="Ninject.Extensions.Wcf.NinjectServiceHostFactory" />
      </serviceActivations>
</serviceHostingEnvironment>

.svcファイルを使用している場合は、マークアップを編集Factory="Ninject.Extensions.Wcf.NinjectServiceHostFactory"して<%@ ServiceHost ... %>宣言に追加できます。

次に、global.asaxを変更して、NinjectWcfApplicationから継承し、カーネルを作成する必要があります。

public class Global : NinjectWcfApplication
{
    protected override IKernel CreateKernel()
    {
        var kernel = new StandardKernel();
        return kernel;
    }
}
于 2012-04-20T18:19:17.427 に答える
2

あなたが提供したリンクは古くなった2.2からのものです。そのページをマスターブランチに切り替えるだけです

于 2012-04-20T19:16:27.217 に答える
1

Ninjectを使用したことはありませんが、通常、ServiceHost実装でワイヤアッププロセスを開始します。何かのようなもの:

public sealed class MyServiceHost : ServiceHost
{
    public MyServiceHost() : base() 
    {
        MyServiceLocator.SetAsDefaultServiceLocator();
    }
}
于 2012-04-20T18:04:12.657 に答える