Application Insights 中所有请求的 resultCode 为 0

resultCode is 0 for all requests in Application Insights

我有一个与 Application Insights 实例连接的函数应用程序。 当我查看有关应用程序洞察力的请求时,无论是否成功,所有条目的 resultCode 均为 0。我怎样才能正确显示 resultCode?

如果我没记错的话,我的函数应用程序 运行 版本为“3.0.14916.0”。

这是我的启动:

public class Startup : FunctionsStartup
{
    public override void Configure(IFunctionsHostBuilder builder)
    {
        builder.Services.AddLogging(loggingBuilder =>
        {
            var key = Environment.GetEnvironmentVariable("APPINSIGHTS_INSTRUMENTATIONKEY");
            loggingBuilder.AddApplicationInsights(key);
        });
        builder.Services.AddSingleton(sp =>
        {
            var key = Environment.GetEnvironmentVariable("APPINSIGHTS_INSTRUMENTATIONKEY");
            return new TelemetryConfiguration(key);
        });

        (...)
    }
}

编辑 1:

在评论中有人问我为什么要在 Startup 中添加日志记录。我这样做是因为,据我所知,如果我在 Startup 中添加日志记录,ILogger < MyClass > 只会记录到 AI。 以下是注入 class 的示例。注意这个class也在其他项目中使用

public class CosmosDbService : ICosmosDbService
{
    private readonly IDocumentClient _documentClient;
    private readonly ILogger _logger;

    public CosmosDbService(IDocumentClient documentClient, ILogger<CosmosDbService> logger)
    {
        _logger = logger;
        _documentClient = documentClient;
    }

    public async Task<UserData> GetUserAsync()
    {
        try
        {
            // Getting user here
            // (...)
        }
        catch (Exception ex)
        {
            _logger.LogError(ex, "Error fetching user.");
            throw;
        }
    }
}

此 class 被注入为:

builder.Services.AddSingleton<IDocumentClient>(sp =>
{
    // This does not really matter for this question
    var configuration = sp.GetService<IConfiguration>();
    var connectionString = configuration.GetValue<string>("COSMOS_DB_CONNECTION");
    var cosmosDbConnectionString = new CosmosDbConnectionString(connectionString);
    return new DocumentClient(cosmosDbConnectionString.ServiceEndpoint, cosmosDbConnectionString.AuthKey);
});
builder.Services.AddSingleton<ICosmosDbService, CosmosDbService>();
来自@PeterBons 的

也帮助我修复了错误的 resultCode。

基本上我导入了错误的包:Microsoft.Extensions.Logging.ApplicationInsights

我把它改成Microsoft.Azure.WebJobs.Logging.ApplicationInsights并删除了启动中的代码。现在我再次正确填写了resultCode。