我尝试在 Azure Functions 中使用依赖注入进行遥测配置。在我的函数中,当我在函数构造函数中注入 TelemetryConfiguration 时,我会解决它。我想我真的不明白我将如何在 StartUp 中使用 TelemetryConfiguration,这就是为什么我会遇到异常。我将如何添加我已经配置的 TelemetryConfiguration。
到目前为止,我在这里做了一个简单的例子。
[assembly: FunctionsStartup(typeof(StartUp))]
public class StartUp : FunctionsStartup
{
private string OmsModule { get; } = "OMS.VA";
public override void Configure(IFunctionsHostBuilder builder)
{
builder.Services.Configure<TelemetryConfiguration>(
(o) =>
{
o.InstrumentationKey = Environment.GetEnvironmentVariable("APPINSIGHTS_INSTRUMENTATIONKEY");
o.TelemetryInitializers.Add(new OperationCorrelationTelemetryInitializer());
});
}
}
public class StopPlaceUpdateTimerTrigger
{
private TelemetryClient _telemetryClient;
private string _azureWebJobsStorage;
public StopPlaceUpdateTimerTrigger(TelemetryConfiguration telemetryConfiguration)
{
_telemetryClient = new TelemetryClient(telemetryConfiguration);
}
[FunctionName("StopPlaceLoader")]
public async Task StopPlaceLoaderMain([TimerTrigger("%CRON_EXPRESSION%", RunOnStartup = true)]TimerInfo myTimerInfo, ILogger log, ExecutionContext context)
{
SetConfig(context);
var …
Run Code Online (Sandbox Code Playgroud) dependency-injection azure telemetry azure-application-insights azure-functions
这篇文章https://medium.com/@dmitryzaets/legacy-net-applications-configuration-management-net-framework-4-5-1-68220335d9d8描述了如何将选项模式与 Autofac 一起使用。我试图将其翻译为与 Simple Injector 一起使用。但我没有运气。这是我的国际奥委会代码
public class IocBootstrap2
{
private Container Container { get; }
public IocBootstrap2()
{
Container = new Container();
var configurationBuilder = new ConfigurationBuilder()
.SetBasePath(Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "Configuration"))
.AddJsonFile("settings.json", optional: false, reloadOnChange: true);
var configuration = configurationBuilder.Build();
//Register Options
Container.Register(typeof(IOptions<>), typeof(OptionsManager<>));
Container.Register(typeof(IOptionsMonitor<>), typeof(OptionsMonitor<>));
Container.Register(typeof(IOptionsFactory<>), typeof(OptionsFactory<>));
Container.Register(typeof(IOptionsMonitorCache<>), typeof(OptionsCache<>));
// Register ConfigurationOptions
Container.RegisterConfigurationOptions2<MailingOptions>(configuration.GetSection("mailing"));
#if DEBUG
Container.Verify();
#endif
}
}
public static class ConfigurationSetupExtensions2
{
public static void RegisterConfigurationOptions2<TOptions>(this Container container, IConfiguration config)
where TOptions : class
{
container.Register(typeof(IOptionsChangeTokenSource<TOptions>), …
Run Code Online (Sandbox Code Playgroud) configuration configurationmanager legacy-code simple-injector .net-core-configuration
我已经简化了我的问题
public class Application
{
public int Id { get; set; }
public int Version { get; set; }
public int Status { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的 3 个清单:
IEnumerable<Application> applications1 = new List<Application>
{
new Application {Id = 1, Version = 1, Status = 1},
new Application {Id = 2, Version = 1, Status = 1},
new Application {Id = 3, Version = 3, Status = 1}
};
IEnumerable<Application> applications2 = new List<Application>
{
new Application {Id = …
Run Code Online (Sandbox Code Playgroud)