C# Autofac DbContext已被释放

C# Autofac DbContext已被释放,c#,asp.net-mvc,autofac,ioc-container,C#,Asp.net Mvc,Autofac,Ioc Container,我已经读过这篇文章,但我仍然得到同样的错误: 无法完成该操作,因为DbContext已被释放 然后在LoginView模型中: public LoginDto GetLoginStatus(IRepository repo, IMembershipService mmbrSvc, string returnUrl) { repository = repo; membershipService = mmbrSvc; User user =

我已经读过这篇文章,但我仍然得到同样的错误:

无法完成该操作,因为DbContext已被释放

然后在LoginView模型中:

public LoginDto GetLoginStatus(IRepository repo, IMembershipService mmbrSvc, string returnUrl)
    {
        repository = repo;
        membershipService = mmbrSvc;

        User user = repository.FirstOrDefault<User>(x => x.Username == Username, x => x.Membership);
    ............
    ............
    }
public LoginDto GetLoginStatus(IRepository repo,IMembershipService mmbrSvc,string returnUrl)
{
储存库=回购;
membershipService=mmbrSvc;
User User=repository.FirstOrDefault(x=>x.Username==Username,x=>x.Membership);
............
............
}

您需要向AutoFac注册
DbContext
本身,并为其提供适当的生存期<代码>InstancePerDependence通常适用于存储库

builder.RegisterType<EFDbContext>().AsSelf().InstancePerDependency();
builder.RegisterType();
然后,您不需要给存储库注册一个对象,只需注册类型(记住还要指定生存期):

builder.Register();

您需要向AutoFac注册
DbContext
本身,并为其提供适当的生存期<代码>InstancePerDependence通常适用于存储库

builder.RegisterType<EFDbContext>().AsSelf().InstancePerDependency();
builder.RegisterType();
然后,您不需要给存储库注册一个对象,只需注册类型(记住还要指定生存期):

builder.Register();

Steve谢谢你的建议,我尝试了builder.RegisterType().AsSelf().InstancePerDependency();builder.RegisterType();但是仍然得到相同的错误。@alexander.c您实际上是如何调用存储库方法的?通过控制器依赖项注入以及其他服务生成器中的依赖项注入。RegisterType().as().InstancePerLifetimeScope()@AlexanderC.能否用控制器构造函数和存储库调用的示例更新您的问题。@AlexanderC.也许可以尝试将
DbContext
注册更改为
InstancePerLifetimeScope
。Steve感谢您的建议,我尝试了builder.RegisterType().AsSelf().InstancePerDependence();builder.RegisterType();但是仍然得到相同的错误。@alexander.c您实际上是如何调用存储库方法的?通过控制器依赖项注入以及其他服务生成器中的依赖项注入。RegisterType().as().InstancePerLifetimeScope()@AlexanderC.您能用控制器构造函数和存储库调用的示例更新您的问题吗。@AlexanderC.也可以尝试将您的
DbContext
注册更改为
InstancePerLifetimeScope
public LoginDto GetLoginStatus(IRepository repo, IMembershipService mmbrSvc, string returnUrl)
    {
        repository = repo;
        membershipService = mmbrSvc;

        User user = repository.FirstOrDefault<User>(x => x.Username == Username, x => x.Membership);
    ............
    ............
    }
builder.RegisterType<EFDbContext>().AsSelf().InstancePerDependency();
builder.Register<EFRepository>().As<IRepository>().InstancePerLifetimeScope();