2016-11-14 56 views
1

使用Castle Windsor MS适配器时应该用什么样的生活方式来取代PerWebRequest?城堡温莎在dotnet核心web应用程序中的生活方式

https://github.com/volosoft/castle-windsor-ms-adapter

dotnet的核心之前,我会用PerWebRequest生活方式几乎所有的容器组件。现在我们与IIS模块和http上下文断开连接了,我想确保在Web请求开始和结束时创建和处理组件。

实施例:

container.Register(Component.For<MyEntityFrameworkContext>) 
    .ImplementedBy<MyEntityFrameworkContext>() 
    .LifestyleTransient()); 

回答

2

ASP.NET核心有它自己的 '范围的' 生命周期,其 '每个请求' 的。看它的文档:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/dependency-injection

用例:

services.AddScoped<ICharacterRepository, CharacterRepository>(); 

你应该做这里面ConfigureServices方法Startup类。

+0

有没有什么办法可以使用内置的IoC容器解耦?我们在这个项目中有多个“端点”,并且希望使用一个容量稍大一点的容器。 – detroitpro

+0

另外,如果我们必须使用内置的容器,那么我们会使用这种适配器的情况是什么? – detroitpro

+0

这是AspNet Core的DI设计。但是您可以使用LifestyleCustom 直接使用Windsor API(该库使之成为:https://github.com/volosoft/castle-windsor-ms-adapter/blob/master/src/Castle.Windsor。 MsDependencyInjection/WindsorRegistrationHelper.cs#L105)。 – hikalkan