gpt4 book ai didi

asp.net-mvc - 与 Ninject 自绑定(bind)成员(member)提供商

转载 作者:行者123 更新时间:2023-12-01 21:12:03 25 4
gpt4 key购买 nike

我尝试在 ASP.NET MVC 2 中自绑定(bind) MembershipProvider,然后在 AccountController 构造函数中使用此绑定(bind)。

这是我的 global.asax.cs 的片段

// selfbind MembershipProvider in request scope
Bind<MembershipProvider>().ToSelf().InRequestScope();

以及服务类的片段:

public AccountMembershipService(MembershipProvider provider, IAccountRepository accountRepository)
{
_provider = provider ?? Membership.Provider;
_accountRepository = accountRepository;
}

我的问题是注入(inject)不起作用(但是 AccountRepository 的注入(inject)确实有效)。这是来自 Ninject 的错误:

Error activating MembershipProvider using self-binding of MembershipProvider
No constructor was available to create an instance of the implementation type.
Activation path:
3. Injection of dependency MembershipProvider into parameter provider of constructor of type AccountMembershipService
2. Injection of dependency IMembershipService into parameter membershipService of constructor of type AccountController
1. Request for IController

Suggestions:
1) Ensure that the implementation type has a public constructor.
2) If you have implemented the Singleton pattern, use a binding with InSingletonScope() instead.

设置 InSingletonScope() 没有任何区别,我无法对构造函数执行任何操作,因为这不是自定义的 MembershipProvider,而是 ASP.NET 附带的默认成员提供程序。

我被困在这里,不知道如何解决。

最佳答案

好的,找到了。我错误地将 MembershipProvider 设置为 self,这不起作用,因为 MembershipProvider 是抽象类。

这有效

Bind<MembershipProvider>().ToConstant(Membership.Provider);

关于asp.net-mvc - 与 Ninject 自绑定(bind)成员(member)提供商,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3935150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com