可能重复:
Inject repository to custom membership provider with Ninject
我已经对这个话题进行了太多搜索,最接近的答案就在这里 MVC 3 ninject custom membership context disposed error 但我对我的应用程序中的所有细节一无所知是一个域包含我的实体和存储库的抽象,当我使用我的Ninject绑定时,实现一切正常
public class NinjectControllerFactory : DefaultControllerFactory{
readonly IKernel _kernel;
public NinjectControllerFactory(){
_kernel=new StandardKernel();
AddBindings();
}
protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType){
return controllerType == null
? null
: (IController) _kernel.Get(controllerType);
}
void AddBindings(){
_kernel.Bind<IٍSomeRepository>()
.To<EFSomeRepository>();
但是我不知道如何绑定客户会员提供商我已经读过这个我必须通过一个电影注入但我不知道如何,任何想法?
答案 0 :(得分:0)
首先,您应该使用Ninject.MVC3而不是您自己的控制器工厂。 Ninject.MVC3负责连接所有东西,你只需要在App_Start \ NinjectWebCommon.cs中提供你的映射
其次,除非您使用自定义成员资格提供程序,否则不要使用Ninject作为成员资格。即便如此,如果你不混合使用Ninject和会员资格,那也就不那么痛苦了。除非你真的知道你在做什么,否则我建议不要打扰它。
问题在于Membership是一个静态类,它创建了Membership Provider的静态实例。这意味着它不会在请求结束时被销毁。有很多方法可以解决这个问题,但总的来说,使用Membership as比使用DI更容易。
您链接的问题解决了与将业务逻辑注入自定义成员资格提供程序相关的特定问题。如果你需要这样做,那么它可能是一个不错的选择。但是,我发现大多数自定义成员资格提供者都非常简单。