.net core 针对.NET核心Azure WebJob的应用程序洞察
当我尝试设置.NET Core WebJob以使用Application Insights时,启动时会出现以下异常: System.InvalidOperationException:“在尝试激活“Microsoft.AspNetCore.Hosting.IHostingEnvironment”时,无法解析类型为“Microsoft.AspNetCore.Hosting.DefaultApplicationInsightsServiceConfigureOptions”的服务。” 我肯定我忽略了什么,但我找不到。我的主要方法就像很多例子一样 乍一看(以及在黑暗中拍摄的真实场景),我会检查.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”的服务。” 我肯定我忽略了
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();
}
}