2012-02-23 2 views
2

wcf 웹 서비스에서 ninject를 사용하고 있습니다.이 웹 서비스는 "ASP.NET MVC 2 빈 웹 응용 프로그램 ".ASP.NET MVC 2에서 호스팅되는 웹 서비스에 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; 
} 

(10)는 잘 작동하지만 때때로 나는 오류 얻을 :

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

을하지만 말했듯이 내가 재생 경로를 찾을 수 없습니다입니다.

답변

1

이전 버전을 사용하고 있다고 가정합니다. 2.1 또는 2.0의 암시 적 바인딩과 함께 멀티 스레딩 문제가 있음을 기억할 수 있습니다. 2.2 및 3.0에서 수정해야합니다.

관련 문제