.net core 针对.NET核心Azure WebJob的应用程序洞察

.net core 针对.NET核心Azure WebJob的应用程序洞察,.net-core,azure-webjobs,.net Core,Azure Webjobs,当我尝试设置.NET Core WebJob以使用Application Insights时,启动时会出现以下异常: System.InvalidOperationException:“在尝试激活“Microsoft.AspNetCore.Hosting.IHostingEnvironment”时,无法解析类型为“Microsoft.AspNetCore.Hosting.DefaultApplicationInsightsServiceConfigureOptions”的服务。” 我肯定我忽略了

当我尝试设置.NET Core WebJob以使用Application Insights时,启动时会出现以下异常:

System.InvalidOperationException:“在尝试激活“Microsoft.AspNetCore.Hosting.IHostingEnvironment”时,无法解析类型为“Microsoft.AspNetCore.Hosting.DefaultApplicationInsightsServiceConfigureOptions”的服务。”

我肯定我忽略了什么,但我找不到。我的主要方法就像很多例子一样

乍一看(以及在黑暗中拍摄的真实场景),我会检查
context.Configuration
是否引发异常,因为APPINSIGHTS\u INSTRUMENTATIONKEY在集合中不存在。缺少的键可能会引发异常,该异常会冒泡到您的DI容器中

编辑:尝试试用此软件包,并让我知道是否有效。它目前处于预发布阶段

编辑:调用AddApplicationInsightsTelemetry使用默认ApplicationInsightsServiceConfigureOptions取决于IHostingEnvironment。IHostingEnvironment未被使用,这导致了您的异常。WebJobsSDK有它关于应用程序洞察的用法,您应该能够类似地使用它来乍一看(以及在黑暗中的真实拍摄),我会检查上下文。配置是否会引发异常,因为集合中不存在APPINSIGHTS\u INSTRUMENTATIONKEY。缺少的键可能会引发异常,该异常会冒泡到您的DI容器中

编辑:尝试试用此软件包,并让我知道是否有效。它目前处于预发布阶段


编辑:调用AddApplicationInsightsTelemetry使用默认ApplicationInsightsServiceConfigureOptions取决于IHostingEnvironment。IHostingEnvironment未被使用,这导致了您的异常。WebJobsSDK提供了关于应用程序使用的见解,您应该能够类似地使用它来采样

Hi!这一行实际上并不完全正确,因为我正在处理这个Configuration.Config对象。但不管怎样,它起作用了,不是问题所在。我试图创建我自己的IHostingEnvironment对象,并将其添加到ConfigureServices方法中,但这也解决不了问题。您是否介意发布项目引用的nuget包?我正在尝试回购该问题,但缺少一些依赖项,我希望确保我使用的是您正在使用的。“Microsoft.ApplicationInsights.AspNetCore”Version=“2.4.1”Microsoft.AspNetCore.Http“Version=“2.2.0”Microsoft.AspNetCore.Http.Abstractions”Version=“2.2.0”Microsoft.Azure.WebJobs“Version=“3.0.4”Microsoft.Azure.WebJobs.Extensions“Version=“3.0.1”“Microsoft.Azure.WebJobs.Extensions.EventHubs”Version=“3.0.2”“Microsoft.Azure.WebJobs.Extensions.Storage”Version=“3.0.3”“Microsoft.Azure.WebJobs.Host.Storage”Version=“3.0.4”“Microsoft.Azure.WebJobs.ServiceBus”Version=“2.3.0”“Microsoft.Extensions.DependencyInjection”Version=“2.2.0”Microsoft.Extensions.Logging.Console“Version=“2.2.0”Microsoft.Extensions.Logging.Debug“Version=“2.2.0”Microsoft.Extensions.Options.ConfigurationExtensions”Version=“2.2.0”我在Main()上没有遇到任何明显的问题。配置服务有什么作用(IServiceCollection x)do?您好!这一行实际上不太正确,因为我正在处理这个Configuration.Config对象。但不管怎样,它是有效的,也不是问题。我试图创建自己的IHostingEnvironment对象,并将其添加到ConfigureServices方法中,但这也解决不了问题。您介意发布您项目的nuget包吗引用?我正在尝试解决此问题,但缺少一些依赖项,我希望确保我使用的是您正在使用的内容。“Microsoft.ApplicationInsights.AspNetCore”Version=“2.4.1”“Microsoft.AspNetCore.Http”Version=“2.2.0”“Microsoft.AspNetCore.Http.Abstractions”Version=“2.2.0”“Microsoft.Azure.WebJobs”Version=“3.0.4”“Microsoft.Azure.WebJobs.Extensions”Version=“3.0.1”“Microsoft.Azure.WebJobs.Extensions.EventHubs”Version=“3.0.2”“Microsoft.Azure.WebJobs.Extensions.Storage”Version=“3.0.3”“Microsoft.Azure.WebJobs.Host.Storage”Version=“3.0.4”“Microsoft.Azure.WebJobs.ServiceBus”Version=”2.3.0“Microsoft.Extensions.DependencyInjection”Version=“2.2.0”Microsoft.Extensions.Logging.Console“Version=“2.2.0”Microsoft.Extensions.Logging.Debug“Version=“2.2.0”Microsoft.Extensions.Options.ConfigurationExtensions”Version=“2.2.0”我在Main()上没有遇到任何明显的问题。
ConfigurationServices是什么(IServiceCollection x)
do?
   public static void Main(string[] args)
    {
        var environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
        Configuration.EnvironmentName = environment;
        Configuration.IsDevelopment = string.Equals(environment, "Development");

        var host = new HostBuilder()
            .UseEnvironment("Development")
            .ConfigureWebJobs(b =>
            {
                b.UseHostId("ecad61-62cf-47f4-93b4-6efcded6")
                .AddAzureStorageCoreServices()
                .AddAzureStorage()
                .AddTimers()
                .AddEventHubs();
            })
            .ConfigureServices(x => ConfigureServices(x))
            .ConfigureAppConfiguration(b =>
            {
                b.AddJsonFile("appsettings.json", false, false);
                b.AddJsonFile($"appsettings.{environment}.json", true);
                b.AddEnvironmentVariables();
                Configuration.Config = b.Build();
            })
            .ConfigureLogging((context, b) =>
            {
                b.AddConfiguration(Configuration.Config);
                b.SetMinimumLevel(LogLevel.Trace);
                b.AddConsole();
                b.AddDebug();
                //TODO fix applicationInsights
                string appInsightsKey = context.Configuration["APPINSIGHTS_INSTRUMENTATIONKEY"];
                if (!string.IsNullOrEmpty(appInsightsKey))
                {
                    b.AddApplicationInsights(o => o.InstrumentationKey = appInsightsKey);
                }
            })
            .Build();

        using (host)
        {
            host.Run();
        }
    }