Отказ от ответственности: это мое первое использование Autofac (я знаком с DI, но использовал другие регистры контейнеров), поэтому я все еще читаю о том, как настроить Autofac, следуя рекомендациям.
Iпросто бросили в проект и попросили найти также утечку памяти.Я сузил его до нашего использования Autofac, но я изо всех сил пытаюсь выяснить, как он используется неправильно.Я запустил Autofac.Analysis, и вот сообщения, которые я вижу.Я много читаю, но не могу найти решение для них.
Настройка:
Все регистрации сборщиков выполняются в Startup.cs
Фрагмент регистрации (для меня они выглядят нормально, но я не эксперт по Autofac)
builder.RegisterType<HttpContextFactory>().As<IHttpContextFactory>().SingleInstance();
builder.RegisterType<HttpContextAccessor>().As<IHttpContextAccessor>().InstancePerLifetimeScope();
builder.RegisterType<ActionContextAccessor>().As<IActionContextAccessor>().InstancePerLifetimeScope();
builder.RegisterType<OpenIdAuthEvents>().SingleInstance();
builder.RegisterType<IntegrationIdentityProvider>().As<IPrincipalContext>().InstancePerLifetimeScope().PropertiesAutowired();
builder.RegisterType<IntegrationIdentityProvider>().As<IIntegrationIdentityProvider>().InstancePerLifetimeScope().PropertiesAutowired();
A003 The non-shared component 70b960dd277a470e844c84cfbdd6b2ec, Microsoft.AspNetCore.Cors.Infrastructure.DefaultCorsPolicyProvider, has been resolved twice directly from the container. This usage pattern can lead to memory leaks when tracked/`IDisposable` components are present.
Level (Warning)
Type (0x37AE056A)
AnalysisCode
A003
AutofacAnalysisSessionId
78c114c7fe244e77a1686db4c162986c
ComponentDescription
Microsoft.AspNetCore.Cors.Infrastructure.DefaultCorsPolicyProvider
ComponentId
70b960dd277a470e844c84cfbdd6b2ec
SourceContext
Autofac.Analysis.Display.EventWriter
Это то же самое сообщение также происходит со следующими компонентами.
Microsoft.AspNetCore.Cors.Infrastructure.CorsService
Swashbuckle.AspNetCore.Swagger.ISwaggerProvider
Autofac.Extensions.DependencyInjection.AutofacServiceScopeFactory
Microsoft.AspNetCore.Hosting.IStartupFilter[]
Microsoft.AspNetCore.Mvc.Razor.Internal.DefaultRazorPageFactoryProvider
Microsoft.AspNetCore.Hosting.Builder.ApplicationBuilderFactory
Я не уверен, полезно ли это, но это может дать некоторое представление о том, как это устроено.При выполнении HTTP-запроса я вижу следующее.
A002 A <level 1> lifetime scope, 2474db230bfe44f9b4a2a22f71a8053a, has been active for more than 10 seconds. To ensure that components are properly released, lifetime scopes must be disposed when no longer required.
AgeThresholdSeconds
10
AnalysisCode
A002
AutofacAnalysisSessionId
f4d97c3ec5144ad8bfe23d0afe8d5755
LifetimeScopeDescription
<level 1>
LifetimeScopeId
2474db230bfe44f9b4a2a22f71a8053a
SourceContext
Autofac.Analysis.Display.EventWriter