每个请求的ASP.NET 5(VNext)Autofac实例
我正在玩ASP.NET vNext,我想在我的一些注册中使用InstancePerRequest,例如MyDbContext就是一个例子.
我已经使用InstancePerLifetimeScope为这些依赖项运行Autofac.哪个有效…. 但是一旦我切换到使用InstancePerRequest,我就会遇到这个常见错误:
我已经阅读了关于此的Autofac帮助文档….但我不确定如何设置导致此异常的“请求生命周期范围”. 有没有人设置集成Autofac的ASP.NET 5 Web应用程序,包括InstancePerRequest? 解决方法
据我所知,您有两个选项,它们都会根据请求为您提供实例.
假设你有以下课程注册: public class Foo : IDisposable { public Foo() { Console.WriteLine("created"); } public void Dispose() { Console.WriteLine("disposed"); } } 注册IServiceCollection 您可以将实例注册为IServiceCollection的作用域,并基于此构建Autofac容器. public IServiceProvider ConfigureServices(IServiceCollection services) { services.AddMvc(); services.AddScoped<Foo,Foo>(); #if DNX451 // Create the autofac container var builder = new ContainerBuilder(); // Create the container and use the default application services as a fallback AutofacRegistration.Populate(builder,services); var container = builder.Build(); return container.Resolve<IServiceProvider>(); #endif return services.BuildServiceProvider(); } 在Autofac Builder上注册 您可以在Autofac构建器上将该类型注册为每个生命周期范围的实例,这将为您提供每个请求生存期的实例: public IServiceProvider ConfigureServices(IServiceCollection services) { services.AddMvc(); #if DNX451 // Create the autofac container var builder = new ContainerBuilder(); // Create the container and use the default application services as a fallback AutofacRegistration.Populate(builder,services); builder.RegisterType<Foo>().As<Foo>().InstancePerLifetimeScope(); var container = builder.Build(); return container.Resolve<IServiceProvider>(); #endif return services.BuildServiceProvider(); } 如上所述,两者的结果相同: 有关ASP.NET 5:Middlewares and Per Request Dependency Injection上每个请求实例的详细信息 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – ASP .Net WorldPay集成
- asp.net – Mono和IHttpHandler
- asp.net – SignalR 3的开发状况如何?
- asp.net – MVC标识||禁用所有cookie并“记住我”选项?
- asp.net – Autofac懒惰属性注入
- asp.net – 为什么不能在发布模式下构建网站?
- asp.net文件下载 – 跟踪下载的大小
- asp.net-core – VS2017:目标框架下拉列表未显示.NET Core
- asp.net-identity – 使用SQL Server而不是LocalDB的Web AP
- asp.net-mvc – Chrome34忽略域名为“.cloudapp.net”的coo