C# 使用ASP.NET Core中的UseApplicationInsights/AddApplicationInsights简单使用注入器

C# 使用ASP.NET Core中的UseApplicationInsights/AddApplicationInsights简单使用注入器,c#,asp.net-core,dependency-injection,simple-injector,C#,Asp.net Core,Dependency Injection,Simple Injector,我正在构建一个ASP.NET Core 2.1应用程序。对于app insight telemetry,我有自己的自定义类,但我还想使用内置的ITelemetryInitializer。启用自动交叉接线时,Simple Injector是否自动解决这些依赖关系 更新 我尝试了下面的一段代码,得到了如下所示的错误。我不确定自动交叉布线应该如何工作 container.Options.DefaultScopedLifestyle = new AsyncScopedLifestyle(); serv

我正在构建一个ASP.NET Core 2.1应用程序。对于app insight telemetry,我有自己的自定义类,但我还想使用内置的
ITelemetryInitializer
。启用自动交叉接线时,Simple Injector是否自动解决这些依赖关系

更新

我尝试了下面的一段代码,得到了如下所示的错误。我不确定自动交叉布线应该如何工作

container.Options.DefaultScopedLifestyle = new AsyncScopedLifestyle();

services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
services.AddSingleton<IControllerActivator>(
    new SimpleInjectorControllerActivator(container));

services.EnableSimpleInjectorCrossWiring(container);
services.UseSimpleInjectorAspNetRequestScoping(container); 

container.AutoCrossWireAspNetComponents(app);

services.AddApplicationInsightsTelemetry(
    applicationInsightsLoggerConfig.InstrumentationKey);

var test = Container.GetInstance<TelemetryConfiguration>();
container.Options.DefaultScopedLifestyle=new AsyncScopedLifestyle();
services.AddSingleton();
服务.AddSingleton(
新的SimpleInjectorControllerActivator(容器));
服务.使能SimpleInjector交叉布线(容器);
使用SimpleInjectorAspnetRequestScoping(容器);
container.AutocrossWireApsNetComponents(应用程序);
services.AddApplicationInsightsTelemetry(
applicationInsightsLoggerConfig.InstrumentationKey);
var test=Container.GetInstance();
TelemetryConfiguration类型的注册委托引发了 例外。IServiceScope类型的注册委托引发了 例外。IServiceScope已注册为“异步作用域” 但该实例是在 活动(异步作用域)作用域。'

感谢

此问题是由简单注入器的ASP.NET Core集成包的4.3.0版中的错误引起的

由于该缺陷,任何自动交叉连接依赖只能在活动范围的上下文中解决,即使该依赖是
单例
<代码>遥测配置是一个
单例

当显式交叉连接该依赖项时(即,使用
container.CrossWire(app)
),问题将消失,因为
CrossWire
确实允许在活动范围之外解决
单例问题

该问题已在集成包中解决。在此版本中,您可以在活动web请求或简单Injector
Scope
的上下文之外解析
TelemetryConfiguration


但是,如果交叉连接服务是暂时的,或者范围是有限的,那么您仍然需要有一个活动的web请求,或者,如果在后台线程上运行,则需要一个活动的简单注入器
范围

您好,请更新。