gpt4 book ai didi

使用 KeyVault 时 Azure 存储 UseDevelopmentStorage=true

转载 作者:行者123 更新时间:2023-12-03 02:37:52 26 4
gpt4 key购买 nike

我已将 API 配置为使用托管标识从 Azure KeyVault 获取 Azure 存储连接字符串。

现在的问题是,当我在 Visual Studio 中本地运行代码时,它不再使用 appsettings.development.json 中的连接字符串,即 "StorageAccount": "UseDevelopmentStorage=true"

因此我在本地运行时无法使用模拟器。

我在 Controller 中创建了以下条件来解决此问题:

    public FileController(IConfiguration configuration, IWebHostEnvironment env)
{
this.configuration = configuration;

if (env.IsDevelopment())
{
conn = this.configuration.GetConnectionString("StorageAccount");

}
else
{
conn = this.configuration["StorageConnectionString"];

}
}

这是正确的方法吗?

最佳答案

在本地,如果您的 ASPNETCORE_ENVIRONMENT 设置为 Development,那么它将读取您的本地存储帐户,例如 UseDevelopmentStorage=true

当您发布到 Azure 时,它​​将使用您的 Web 应用程序的 MSI 从 Key Vault 获取连接字符串。

更多详细信息,您可以引用以下代码:

private IConfiguration _configuration;
private IWebHostEnvironment _env;

public WeatherForecastController(IConfiguration configuration, IWebHostEnvironment env)
{
_configuration = configuration;
_env = env;
}

if (_env.IsDevelopment())
{
con = _configuration.GetSection("StorageAccount").Value;
}
else
{
AzureServiceTokenProvider azureServiceTokenProvider = new AzureServiceTokenProvider();
var keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));
con = keyVaultClient.GetSecretAsync("https://xxxx.vault.azure.net/secrets/xxxx").GetAwaiter().GetResult().Value;

}

关于使用 KeyVault 时 Azure 存储 UseDevelopmentStorage=true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62513975/

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