Информация о приложении для .NET Core Azure WebJob - PullRequest
0 голосов
/ 11 февраля 2019

Когда я пытаюсь настроить мой .NET Core WebJob для использования Application Insights, при запуске я получаю следующее исключение:

System.InvalidOperationException: «Невозможно разрешить службу для типа» Microsoft.AspNetCore.Hosting.IHostingEnvironment 'при попытке активировать' Microsoft.AspNetCore.Hosting.DefaultApplicationInsightsServiceConfigureOptions '.'

Я уверен, что что-то пропускаю, но не могу это выяснить.Мой метод Main похож на многие примеры, например здесь

   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();
        }
    }

1 Ответ

0 голосов
/ 12 февраля 2019

На первый взгляд (и настоящий выстрел в темноте), я бы проверил, если context.Configuration это вызывает исключение, потому что APPINSIGHTS_INSTRUMENTATIONKEY не существует в коллекции.Отсутствующий ключ может выдавать исключение, которое пузырится в вашем DI-контейнере.

РЕДАКТИРОВАТЬ: попробуйте попробовать этот пакет и дайте мне знать, если работает.Это в настоящее время в предварительной версии.https://www.nuget.org/packages/Microsoft.Extensions.Logging.ApplicationInsights/

РЕДАКТИРОВАТЬ: вызов AddApplicationInsightsTelemetry использует DefaultApplicationInsightsServiceConfigureOptions зависит от IHostingEnvironment.IHostingEnvironment не используется WebJobsSDK , который вызывает ваше исключение.В WebJobsSDK он используется Application Insights, и вы должны использовать его аналогично https://github.com/Azure/azure-webjobs-sdk/tree/dev/sample/SampleHost sample

...