2012-02-23 11 views
2

wcf Webサービスでninjectを使用しています。このWebサービスは、「ASP.NET MVC 2空のWebアプリケーション"ASP.NET MVC 2でホストされているWebサービスにNinject.Extensions.Wcfを使用

Ninject.dll v2とNinject.Extensions.Wcf.dll v1の参照を使用しています。

サービスファイルのマークアップは、Global.asaxのは

public class WCFNinjectModule : NinjectModule 
{ 
    public override void Load() 
    { 
     Bind<IRepository>().To<EFRepository>(); 
     // rest of bindings 
    } 
} 

およびサービスに対する唯一のコンストラクタがあるとNinjectWcfApplication

public class Global : NinjectWcfApplication 
{ 
    protected override IKernel CreateKernel() 
    { 
     return new StandardKernel(new WCFNinjectModule()); 
    } 
} 

から継承している

<%@ ServiceHost 
Language="C#" 
Debug="true" 
Service="wcf_ninject.Service1" 
CodeBehind="Service1.svc.cs" 
Factory="Ninject.Extensions.Wcf.NinjectServiceHostFactory" %> 

次のとおりです。

public Service1(IRepository repository) 
{ 
    _repo = repository; 
} 

時間のほとんどが正常に動作しますが、時々私はエラーを取得:

"Error activating Service1 More than one matching bindings are available"

しかし、私は再生経路を見つけることができません言ったように。

答えて

1

古いバージョンを使用していることを前提としています。 2.1または2.0の暗黙的なバインディングでマルチスレッドの問題があったことを思い出してください。 2.2と3.0で修正する必要があります。

関連する問題