如何启用日志记录并加快Azure应用程序配置的启动时间?

问题描述 投票:0回答:1

我在 .NET 应用程序中使用 Azure 应用程序配置在启动时加载配置设置。但是,我遇到了两个需要帮助的问题:

  • 应用程序启动时,加载 Azure 应用程序配置大约需要 10 秒。没关系,但是,在这段时间里,无法了解正在发生的事情。有没有办法启用

    AddAzureAppConfiguration
    的日志记录,以便我们知道它何时连接、重新连接等?

  • 有没有办法缓存配置,让应用程序不必每次重启都等待10秒?

这是我用来添加 Azure 应用程序配置的代码:

using Azure.Identity;
using Microsoft.Extensions.Configuration.AzureAppConfiguration;

namespace Api.Azure;

public static class AzureAppConfiguration
{
    public static WebApplicationBuilder AddAzureAppConfiguration(this WebApplicationBuilder builder)
    {
        ArgumentNullException.ThrowIfNull(builder);

        var endpoint = builder.Configuration["Azure:AppConfiguration:Endpoint"];
        if (string.IsNullOrEmpty(endpoint))
        {
            // Azure App Configuration endpoint is not set, using local configuration...
            return builder;
        }

        builder.Configuration.AddAzureAppConfiguration(options =>
        {
            options.Connect(new Uri(endpoint), new DefaultAzureCredential())
                .Select(KeyFilter.Any)
                .ConfigureKeyVault(vaultOptions => vaultOptions.SetCredential(new DefaultAzureCredential()));
        });

        return builder;
    }
}
azure asp.net-core azure-keyvault azure-app-configuration
1个回答
0
投票

假设应用程序和配置服务位于同一 DC,则延迟可能是由 DefaultAzureCredential 引起的。正如官方所说-

通过将 Azure 托管环境中使用的凭据与本地开发中使用的凭据相结合,简化了开发部署到 Azure 的应用程序时的身份验证。 生产中,最好用别的东西

还有这个 -

性能开销:顺序尝试多个凭据的过程可能会带来性能开销。例如,在本地开发计算机上运行时,托管标识不可用。因此,除非通过其相应的排除前缀属性明确禁用,否则 ManagedIdentityCredential 在本地开发环境中始终会失败。

添加下一段看看是否属实 -

using AzureEventSourceListener listener = new((args, message) =>
{
    Console.WriteLine(message); //TODO: replace with a relevant output destination
}, EventLevel.LogAlways);
© www.soinside.com 2019 - 2024. All rights reserved.