gpt4 book ai didi

azure - 从.net core应用程序的appsetting中访问KV中的 secret 值

转载 作者:行者123 更新时间:2023-12-03 06:15:23 26 4
gpt4 key购买 nike

我已经部署了一个 .net core api 应用程序,通过读取连接字符串将消息发送到队列。我已向 key 保管库管理员和 key 保管库贡献者提供应用服务的身份。我将连接字符串放在 appsettings.json 中并且它起作用了。我将连接字符串的值放入 Key Vault 中,并使用 Key Vault 的 uri 并进行了所需的代码更改,效果也很好。

现在我指的是应用程序设置中的 secret 值,如下所示:

"MyConnectionString": "@Microsoft.KeyVault(SecretUri=https://my-kv.vault.azure.net/secrets/MyConnectionString/)"

当我调用 api 时,我得到 500,当我看到来自应用程序服务的日志时,我看到以下错误:

Exception: 
System.FormatException: No valid combination of account information found.
at Microsoft.WindowsAzure.Storage.CloudStorageAccount.<>c.<Parse>b__97_0(String err)
at Microsoft.WindowsAzure.Storage.CloudStorageAccount.ParseImpl(String connectionString, CloudStorageAccount& accountInformation, Action`1 error)
at Microsoft.WindowsAzure.Storage.CloudStorageAccount.Parse(String connectionString)

appsettings.json

{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*",
"MyConnectionString": "@Microsoft.KeyVault(SecretUri=https://my-kv.vault.azure.net/secrets/MyConnectionString/)"
//"VaultName": "https://my-kv.vault.azure.net/"
}

using Microsoft.Extensions.Configuration;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Queue;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace TestApp.Controllers
{
public interface IMessageSender
{
Task Send(string content);
}

public class AzureQueueSender : IMessageSender
{
public AzureQueueSender(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public async Task Send(string content)
{
var connectionString = Configuration.GetValue<string>("MyConnectionString");
await SendMessage(connectionString);
}

private static async Task SendMessage(string connectionString)
{
var storageAccount = CloudStorageAccount.Parse(connectionString);
storageAccount.CreateCloudQueueClient();
var queueClient = storageAccount.CreateCloudQueueClient();
var queue = queueClient.GetQueueReference("queuename");
var message = new CloudQueueMessage("Hello World!");
await queue.AddMessageAsync(message);
}
}
}

最佳答案

要使用引用访问和检索 Key Vault Secret 值,我们需要在已部署的 Azure 应用服务中设置应用设置。

key 名称必须与您在本地 appsettings.json 文件中设置的 key 相同。

  • 由于您已设置名称为 MyConnectionString 的 key ,我将在门户中已部署应用的配置部分中设置相同的键值

Azure 应用程序 => 配置 => 应用程序设置 =>新应用程序设置

enter image description here

Name : MyConnectionString
Value:"@Microsoft.KeyVault(SecretUri=https://my-kv.vault.azure.net/secrets/MyConnectionString/)"
  • 您设置的应用设置现在可以通过键 APPSETTING_MyConnectionString 在环境变量(KUDU 控制台)中使用。

enter image description here

我们甚至可以将值检索为

var myconn= Environment.GetEnvironmentVariable("APPSETTING_MyConnectionString");

关于azure - 从.net core应用程序的appsetting中访问KV中的 secret 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76307477/

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