You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Azure KeyVault读取Application Insights密钥并在ASP.NET Core中DI注入

从Azure KeyVault读取Application Insights密钥并配置依赖注入

1. 安装所需NuGet包

  • 确保已安装Microsoft.ApplicationInsights.AspNetCore(若之前已使用Application Insights,通常已存在)
  • 添加Azure KeyVault配置包:
# Package Manager Console
Install-Package Azure.Extensions.AspNetCore.Configuration.Secrets

# 或dotnet CLI
dotnet add package Azure.Extensions.AspNetCore.Configuration.Secrets

2. 移除appsettings.json中的Application Insights配置

直接删除以下配置段:

"ApplicationInsights": {
  "InstrumentationKey": "xxxx-xxxxxx-xxxxx-xxxxxxx"
}

3. 在Azure KeyVault中添加密钥

在你的Azure KeyVault实例中创建一个机密(Secret):

  • 名称设为ApplicationInsights--InstrumentationKey(双横线对应配置层级的分隔规则)
  • 值填写你的Application Insights Instrumentation Key

4. 配置应用读取Azure KeyVault

.NET 6+(Program.cs 顶级语句)

var builder = WebApplication.CreateBuilder(args);

// 添加Azure KeyVault作为配置源
var keyVaultUri = new Uri(builder.Configuration["KeyVaultUri"]);
// KeyVaultUri可从环境变量或本地非敏感配置(如appsettings.Development.json)中读取
builder.Configuration.AddAzureKeyVault(keyVaultUri, new DefaultAzureCredential());

// 配置Application Insights,自动从KeyVault读取密钥
builder.Services.AddApplicationInsightsTelemetry();

// 其他服务配置...

var app = builder.Build();

// 中间件配置...

app.Run();

.NET 5及更早版本(Startup.cs)

public class Startup
{
    public IConfiguration Configuration { get; }

    public Startup(IConfiguration configuration)
    {
        var configBuilder = new ConfigurationBuilder()
            .AddConfiguration(configuration)
            .AddAzureKeyVault(
                new Uri(configuration["KeyVaultUri"]),
                new DefaultAzureCredential());

        Configuration = configBuilder.Build();
    }

    public void ConfigureServices(IServiceCollection services)
    {
        // 绑定配置并启用Application Insights
        services.AddApplicationInsightsTelemetry(Configuration);

        // 其他服务配置...
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        // 中间件配置...
    }
}

身份验证说明:DefaultAzureCredential会自动适配不同环境:

  • 本地开发:优先使用Azure CLI、Visual Studio/VS Code已登录的账户
  • Azure部署:优先使用托管标识(需给KeyVault访问策略添加托管标识的「机密获取/列表」权限)

5. 验证依赖注入

只要正确配置了AddApplicationInsightsTelemetry,即可在控制器或服务中直接注入TelemetryClient使用:

[ApiController]
[Route("[controller]")]
public class DemoController : ControllerBase
{
    private readonly TelemetryClient _telemetryClient;

    public DemoController(TelemetryClient telemetryClient)
    {
        _telemetryClient = telemetryClient;
    }

    [HttpGet]
    public IActionResult Get()
    {
        // 记录自定义事件
        _telemetryClient.TrackEvent("DemoEndpointAccessed");
        return Ok("Success");
    }
}

6. 本地调试注意事项

本地开发时,确保已通过Azure CLI登录账户:

az login

或在Visual Studio中关联你的Azure账户,让DefaultAzureCredential能正常访问KeyVault。

内容的提问来源于stack exchange,提问作者Samadhan Chavan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 20:40:27