gpt4 book ai didi

asp.net-core-2.0 - 在本地主机中使用 secrets.json 时,事件不会流向 Application Insights

转载 作者:行者123 更新时间:2023-12-02 09:13:58 26 4
gpt4 key购买 nike

我用了这个Application Insights getting started设置我的应用程序的指南。我正在运行 VS2017 版本 15.5.7,我的应用程序正在使用 AspNetCore 2.0.0

当我从 Visual Studio 使用 IIS Express 调试我的应用程序时,我在调试器事件窗口中看到了 Application Insights 事件。但是,相同的事件不会流向 Azure 中的 Application Insights;我已经在 secrets.json 中配置了 InstrumentationKey,如下所示。我已通过设置断点确认 key 已加载到我的应用程序配置中。

作为另一个调试数据点,我已经确认事件在 Azure Web 应用程序中运行时确实成功地流向 Application Insights。此测试使用完全相同的代码。但是,我没有从 secrets.json 加载 InstrumentationKey,而是配置了 APPINSIGHTS_INSTRUMENTATIONKEY 环境变量以获取 key (通过 ApplicationSettings Pane 门户中的 Web 应用程序)。

我不知道为什么我的事件没有通过本地主机调试器流向 Application Insights,但在部署到 Web 应用程序时却流向了。

Program.cs

public static void Main( string[] args )
{
BuildWebHost( args ).Run();
}

public static IWebHost BuildWebHost( string[] args ) =>
WebHost.CreateDefaultBuilder( args )
.UseStartup<Startup>()
.UseApplicationInsights()
.Build();

Startup.cs

var configurationBuilder = new ConfigurationBuilder()
.SetBasePath( hostingEnvironment.ContentRootPath )
.AddJsonFile( $"appsettings.{hostingEnvironment.EnvironmentName}.json", optional: true, reloadOnChange: true );

if ( hostingEnvironment.IsDevelopment() )
{
configurationBuilder.AddUserSecrets<Startup>( optional: true );
}

this.Configuration = configurationBuilder
.AddEnvironmentVariables()
.Build();

secrets.json

{
"ApplicationInsights": {
"InstrumentationKey": "omitted for StackOverflow"
}
}

我的.csproj

<PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.1.1" />
<PackageReference Include="Microsoft.ApplicationInsights.Web" Version="2.5.1" />
<PackageReference Include="Microsoft.AspNetCore" Version="2.0.0" />

launchSettings.json

{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:2322/",
"sslPort": 44330
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "https://localhost:44330/",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"FrontDoor": {
"commandName": "Project",
"launchBrowser": true,
"launchUrl": "https://localhost:44330/api/config",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "http://localhost:2323"
}
}
}

最佳答案

  1. 当您在调试器输出窗口中看到 appinsights 事件时,这些事件中是否显示 (unconfigured)?如果它出现在输出窗口中,则意味着 sdk 正在调试中运行,但未在您的 appsettings.json(或代码)中找到检测 key 请注意,application insights sdks 不会在 usersecrets 中查找此设置,只会在 appsettings 中查找!(编辑 2020 年 5 月 28 日:请参阅下面 OP 的编辑,而这是2 年前的问题,如果您使用 AddApplicationInsightsTelemetry 而不是过时的 UseApplicationInsights,则此限制不适用)

  2. 如果调试器窗口中的事件没有(unconfigured),下一步是使用像 Fiddler 这样的东西来观察你的出站 http 流量,以确保您看到 SDK 对 dc.services.visualstudio.com 的出站调用,并且这些出站调用成功。 (在这一步,您可以验证您认为正在使用的检测 key 是 sdk 用于发送事件的 key )

  3. 如果正在发送事件,并且正在使用您设置的 ikey,最后一步是验证您正在使用的 ikey 是否是您在门户中查看的资源的 ikey。每隔一段时间,某人在某处拥有“dev”的 ikey,然后在门户中查看“prod”资源,却看不到他们期望的事件。

  4. 如果您已经走到这一步,发送事件,发送到您想要的 ikey,并验证 ikey 是您期望的资源,然后验证没有任何服务可能会影响您的数据的中断或延迟,您可以在 http://aka.ms/aistatus 找到否则,您通常应该在几秒到几分钟内看到事件,具体取决于您在世界上的哪个位置以及您的资源处于 Azure 的哪个区域等。

OP 编辑​​答案的完整性:

确实,我达到了第一,正如约翰在评论中暗示的那样,我需要让 AI SDK 以另一种方式了解我的 iKey。我没有在 Program.cs 中使用 UseApplicationInsights(),而是在 StartUp.ConfigureServices( )。传递的配置从 secrets.json 加载了我的 iKey。

关于asp.net-core-2.0 - 在本地主机中使用 secrets.json 时,事件不会流向 Application Insights,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48944492/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com