1

사용자 지정 멤버 자격 공급자가있는 ASP.NET MVC 3 웹 응용 프로그램을 만들고 있습니다. Ninject.Extensions.Factory 3.0.0을 사용하여 내 맞춤 멤버십 공급자의 공용 속성에 팩토리를 주입하려고 시도하지만 원활하게 진행되지 않습니다. NinjectWebCommon.cs에서 RegisterServices 코드 여기공장 확장자가 Ninject 3.0.0이고 ASP.NET MVC 3의 사용자 지정 멤버 자격 공급자에 팩토리를 삽입하는 데 문제가 있습니다.

public class MtgMembershipInitializationModule : IHttpModule 
{ 
    public MtgMembershipInitializationModule(MembershipProvider membershipProvider) 
    { 
    } 

    public void Dispose() 
    {    
    } 

    public void Init(HttpApplication context) 
    { 
    } 
} 

것 :

private static void RegisterServices(IKernel kernel) 
{ 
    kernel.Bind<IUnitOfWork>() 
     .To<EFUnitOfWork>() 
     .NamedLikeFactoryMethod((IUnitOfWorkFactory f) => f.GetEFUnitOfWork()); 

    kernel.Bind<MembershipProvider>().ToMethod(ctx => Membership.Provider); 
    kernel.Bind<IHttpModule>().To<MtgMembershipInitializationModule>(); 
} 
다음
public class MtgMembershipProvider : MembershipProvider 
{ 
    [Inject] 
    public IUnitOfWorkFactory UnitOfWorkFactory { get; set; } 

    ... 
} 

public interface IUnitOfWorkFactory 
{ 
    IUnitOfWork GetEFUnitOfWork(); 
} 

내 회원 초기화 모듈입니다 : 여기

내 사용자 지정 멤버 클래스와 팩토리 인터페이스

web.config에서 다음과 같이 표시됩니다.

내가 웹 애플리케이션을 실행하면 16,
<system.web> 
    <membership defaultProvider="MtgMembershipProvider"> 
    <providers> 
     <clear /> 
     <add name="MtgMembershipProvider" type="MtgManager.WebUI.Infrastructure.MtgMembershipProvider" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="MtgManager_WebUI" /> 
    </providers> 
    </membership> 
</system.web> 

, 나는 모듈을 초기화하는 동안 예외가 :

Error activating IUnitOfWorkFactory 
No matching bindings are available, and the type is not self-bindable. 
Activation path: 
3) Injection of dependency IUnitOfWorkFactory into property UnitOfWorkFactory of type MtgMembershipProvider 
2) Injection of dependency MembershipProvider into parameter membershipProvider of constructor of type MtgMembershipInitializationModule 
1) Request for IHttpModule 

Suggestions: 
1) Ensure that you have defined a binding for IUnitOfWorkFactory. 
2) If the binding was defined in a module, ensure that the module has been loaded into the kernel. 
3) Ensure you have not accidentally created more than one kernel. 
4) If you are using constructor arguments, ensure that the parameter name matches the constructors parameter name. 
5) If you are using automatic module loading, ensure the search path and filters are correct. 

내가 잘못 뭘하는지 모르겠어요. Remo Gloor의 블로그 게시물 ASP.NET Provider dependency injection with Ninject 3.0.0related StackExchange discussion은 물론 this question about NamedLikeFactoryMethod 및 기타 수많은 게시물을 추적했지만 막혀 있습니다. 내가 뭘 놓치고 있니?

답변

1

당신은 당신의 공장 바인드 할 필요가

Bind<IUnitOfWorkFactory>().ToFactory();