C # Ninject 바인딩 결과 표준 MVC 클래스 AccountController에서 빈 저장소가 발생합니다.

세드릭 반 하버 베케

C #에서 MVC 프레임 워크를 사용하여 응용 프로그램을 만들고 있습니다. 우리는 모든 사용자를 포함하는 저장소 'uitlenerRepository'를 만들고 싶습니다.

RegisterServices 클래스의 NinjectWebCommon에서 Ninject를 사용하여 저장소를 바인딩했습니다.

public static class NinjectWebCommon 
{
    private static readonly Bootstrapper bootstrapper = new Bootstrapper();

    /// <summary>
    /// Starts the application
    /// </summary>
    public static void Start() 
    {
        DynamicModuleUtility.RegisterModule(typeof(OnePerRequestHttpModule));
        DynamicModuleUtility.RegisterModule(typeof(NinjectHttpModule));
        bootstrapper.Initialize(CreateKernel);
    }

    /// <summary>
    /// Stops the application.
    /// </summary>
    public static void Stop()
    {
        bootstrapper.ShutDown();
    }

    /// <summary>
    /// Creates the kernel that will manage your application.
    /// </summary>
    /// <returns>The created kernel.</returns>
    private static IKernel CreateKernel()
    {
        var kernel = new StandardKernel();
        try
        {
            kernel.Bind<Func<IKernel>>().ToMethod(ctx => () => new Bootstrapper().Kernel);
            kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>();

            RegisterServices(kernel);
            return kernel;
        }
        catch
        {
            kernel.Dispose();
            throw;
        }
    }

    /// <summary>
    /// Load your modules or register your services here!
    /// </summary>
    /// <param name="kernel">The kernel.</param>
    private static void RegisterServices(IKernel kernel)
    {

        kernel.Bind<IMateriaalRepository>().To<MateriaalRepository>().InRequestScope();
        kernel.Bind<IReservatieRepository>().To<ReservatieRepository>().InRequestScope();
        kernel.Bind<IUitlenerRepository>().To<UitlenerRepository>();
        kernel.Bind<UitleenAppContext>().ToSelf().InRequestScope();
    }        
}

보시다시피 다른 리포지토리에서 동일한 방법을 시도했는데 성공했습니다. 다른 저장소의 유일한 차이점은 미리 정의 된 클래스 'AccountController'에서 새 저장소를 만든다는 것입니다. 그 수업에서는 새 사용자를 쉽게 추가 할 수 있기 때문입니다. 이 클래스에서는 빈 생성자를 만들어 세 번째 매개 변수로 추가했습니다.

public class AccountController : Controller
    {
        private ApplicationSignInManager _signInManager;
        private ApplicationUserManager _userManager;
        private IUitlenerRepository uitlenerRepository;

    public AccountController()
    {
    }

    public AccountController(ApplicationUserManager userManager, ApplicationSignInManager signInManager, IUitlenerRepository uitlenerRepository)
    {
        UserManager = userManager;
        SignInManager = signInManager;
        this.uitlenerRepository = uitlenerRepository;
    }

새 사용자를 저장소에 추가 할 수 없습니다. 디버깅 할 때 저장소의 값이 null이라는 것을 알게되었고 바인딩이 제대로 작동하지 않음을 나타냅니다.

디버깅 사진

누구든지이 문제를 해결하는 방법을 알고 있습니까?

BatteryBackupUnit

AccountController()의 ctor는 그 이유의 널 (null)입니다, 사용하고 있습니다. Ninject는 해결할 수있는 매개 변수가 가장 많은 생성자를 선택합니다. 나는 ApplicationUserManager또는 ApplicationSignInManager바인딩이 필요하다고 생각합니다 . AccountController()매개 변수가없는 ctor 를 제거하면 ninject가 예외를 발생시키고 다른 ctor를 사용할 수없는 이유를 정확히 알려줍니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

클래스 인스턴스 사전에 객체를 저장하면 예기치 않은 결과가 발생합니다.

분류에서Dev

C ++ : 템플릿 전문화로 인해 디버그 / 릴리스에서 다른 결과가 발생합니다.

분류에서Dev

Windows.h로 인해 C ++ 클래스에 문제가 발생합니다.

분류에서Dev

JUnit에서 자동 연결 : 다른 클래스가 아닌 테스트 클래스의 필드 만 바인딩

분류에서Dev

C # : 클래스 메서드에서 ListBox DisplayMember 및 ValueMember 결과에 바인딩하는 방법은 무엇입니까?

분류에서Dev

0 매개 변수를 사용하는 생성자가 있어야하는 클래스에 ninject 바인딩 된 객체 전달

분류에서Dev

Ninject 바인딩에 생성자 인수 추가

분류에서Dev

Ninject에서 컨텍스트가 동일 할 때 여러 서비스의 바인딩을 해결하는 더 나은 방법은 무엇입니까?

분류에서Dev

Ninject에서 컨텍스트가 동일 할 때 여러 서비스의 바인딩을 해결하는 더 나은 방법은 무엇입니까?

분류에서Dev

C #에서 비 정적 Azure 함수 클래스를 만들 수 있습니다. 결과는 무엇인가요?

분류에서Dev

C # 후기 평가로 인해 Dictionary.Add ()에서 예기치 않은 결과가 발생합니다.

분류에서Dev

내 조각에 대한 바인딩 클래스를 생성하는 중 오류가 발생했습니다.

분류에서Dev

C # WPF의 다른 클래스에있는 클래스의 바인딩 속성

분류에서Dev

Xamarin.iOS iOS Objective-C 라이브러리 바인딩으로 인해 빈 네임 스페이스가 발생했습니다.

분류에서Dev

배열의 요소에 저장된 파생 클래스의 인스턴스가있는 기본 클래스의 C ++ 배열

분류에서Dev

C # PerformanceCounter 클래스로 인해 핸들 누수가 발생합니다.

분류에서Dev

AngularJS 서비스 약속의 결과를 가져오고 지시문 값에 바인딩합니다.

분류에서Dev

서비스 주석 클래스는 저장소 통화 nullpointer 예외가 발생합니다

분류에서Dev

진행률 표시 줄을 목록보기에 바닥 글로 추가하면 setAdapter 호출에서 클래스 캐스트 예외가 발생합니다.

분류에서Dev

저장 프로 시저의 결과로 데이터 소스를 내 DataGridView에 바인딩 할 수없는 이유는 무엇입니까?

분류에서Dev

C ++ 상속 : 기본 클래스에 대한 파생 클래스 포인터가 파생 클래스 메서드를 호출합니다.

분류에서Dev

MVC가있는 자바 스크립트 URL로 인해 색인 페이지에 문제가 발생합니다.

분류에서Dev

다른 클래스에서 (벡터) 포인터를 호출하는 C ++는 빈 크기를 반환합니다.

분류에서Dev

콤보 박스에 대한 저장 프로 시저 결과 바인딩 실패

분류에서Dev

Numpy : 랜덤 시드 및 멀티 스레딩으로 인해 다른 결과가 발생합니다.

분류에서Dev

DocumentBuilder.parse에서 ""c : de "요소의 접두사"c "가 바인딩되지 않았습니다."라는 오류가 발생합니다.

분류에서Dev

서블릿에서 코어 Java 클래스를 인스턴스화 할 때 404 오류가 발생합니다.

분류에서Dev

Asp.Net MVC에서 "Null 참조에서 런타임 바인딩을 수행 할 수 없습니다"오류가 발생합니다.

분류에서Dev

Ninject 팩토리 인터페이스는 커널에서 누락 된 생성자 인수를 해결합니다.

Related 관련 기사

  1. 1

    클래스 인스턴스 사전에 객체를 저장하면 예기치 않은 결과가 발생합니다.

  2. 2

    C ++ : 템플릿 전문화로 인해 디버그 / 릴리스에서 다른 결과가 발생합니다.

  3. 3

    Windows.h로 인해 C ++ 클래스에 문제가 발생합니다.

  4. 4

    JUnit에서 자동 연결 : 다른 클래스가 아닌 테스트 클래스의 필드 만 바인딩

  5. 5

    C # : 클래스 메서드에서 ListBox DisplayMember 및 ValueMember 결과에 바인딩하는 방법은 무엇입니까?

  6. 6

    0 매개 변수를 사용하는 생성자가 있어야하는 클래스에 ninject 바인딩 된 객체 전달

  7. 7

    Ninject 바인딩에 생성자 인수 추가

  8. 8

    Ninject에서 컨텍스트가 동일 할 때 여러 서비스의 바인딩을 해결하는 더 나은 방법은 무엇입니까?

  9. 9

    Ninject에서 컨텍스트가 동일 할 때 여러 서비스의 바인딩을 해결하는 더 나은 방법은 무엇입니까?

  10. 10

    C #에서 비 정적 Azure 함수 클래스를 만들 수 있습니다. 결과는 무엇인가요?

  11. 11

    C # 후기 평가로 인해 Dictionary.Add ()에서 예기치 않은 결과가 발생합니다.

  12. 12

    내 조각에 대한 바인딩 클래스를 생성하는 중 오류가 발생했습니다.

  13. 13

    C # WPF의 다른 클래스에있는 클래스의 바인딩 속성

  14. 14

    Xamarin.iOS iOS Objective-C 라이브러리 바인딩으로 인해 빈 네임 스페이스가 발생했습니다.

  15. 15

    배열의 요소에 저장된 파생 클래스의 인스턴스가있는 기본 클래스의 C ++ 배열

  16. 16

    C # PerformanceCounter 클래스로 인해 핸들 누수가 발생합니다.

  17. 17

    AngularJS 서비스 약속의 결과를 가져오고 지시문 값에 바인딩합니다.

  18. 18

    서비스 주석 클래스는 저장소 통화 nullpointer 예외가 발생합니다

  19. 19

    진행률 표시 줄을 목록보기에 바닥 글로 추가하면 setAdapter 호출에서 클래스 캐스트 예외가 발생합니다.

  20. 20

    저장 프로 시저의 결과로 데이터 소스를 내 DataGridView에 바인딩 할 수없는 이유는 무엇입니까?

  21. 21

    C ++ 상속 : 기본 클래스에 대한 파생 클래스 포인터가 파생 클래스 메서드를 호출합니다.

  22. 22

    MVC가있는 자바 스크립트 URL로 인해 색인 페이지에 문제가 발생합니다.

  23. 23

    다른 클래스에서 (벡터) 포인터를 호출하는 C ++는 빈 크기를 반환합니다.

  24. 24

    콤보 박스에 대한 저장 프로 시저 결과 바인딩 실패

  25. 25

    Numpy : 랜덤 시드 및 멀티 스레딩으로 인해 다른 결과가 발생합니다.

  26. 26

    DocumentBuilder.parse에서 ""c : de "요소의 접두사"c "가 바인딩되지 않았습니다."라는 오류가 발생합니다.

  27. 27

    서블릿에서 코어 Java 클래스를 인스턴스화 할 때 404 오류가 발생합니다.

  28. 28

    Asp.Net MVC에서 "Null 참조에서 런타임 바인딩을 수행 할 수 없습니다"오류가 발생합니다.

  29. 29

    Ninject 팩토리 인터페이스는 커널에서 누락 된 생성자 인수를 해결합니다.

뜨겁다태그

보관