gpt4 book ai didi

azure - 如何不从用户 secret 配置中获取空值?

转载 作者:行者123 更新时间:2023-12-02 23:08:26 25 4
gpt4 key购买 nike

我想将用户 secret 用于 KeyVault clientid 等。当我设置 KeyVault 时,我从 program.cs 调用我的配置。当我在 appsettings.json 中添加值时,一切正常,但如果我删除它并管理用户 secret ,当我的 program.cs 运行时,它总是显示为 null。

我在创建的 secret.json 中有正确的值,并且带有 guid 的属性也在我的项目文件中

我还尝试向 secret.json 添加键和值,并尝试从 Controller 获取它,但它也是空的。

所以我的 program.se 中的 WebHost.CreateDefaultBuilder 似乎没有加载我的 secret.json 文件。

如果我将 AssUserSecrets 添加到 progam.cs 中的 WebHost.CreateDefaultBuilder(args) 中,则不会出现相同的问题。

我正在使用WebHost.CreateDefaultBuilder,因此在 asp .net core 2.2 中默认使用它

dontnet user-secret list 

Will 还会显示我的 secret.json 文件中的值,因此该值就在那里,用户 secret 已初始化。

dontnet user-secret init

另外,假设它已经设置好了。

但在调用我的 secret.json 属性时仍然为 null

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.ConfigureServices(services => services.AddAutofac())
.ConfigureAppConfiguration((context, builder) =>
{
var config = builder.Build();
var vault = config["KeyVault:Vault"];
builder.AddAzureKeyVault($"https://{config["KeyVault:Vault"]}.vault.azure.net/", config["KeyVault:ClientId"], config["KeyVault:ClientSecret"]);

});

最佳答案

我在我的网站上测试过,效果很好,以下是您可以引用的步骤。

1.右键单击该项目并选择管理用户 secret 。它将在 Visual Studio 中打开 Secrets.json 文件,您可以在其中添加 secret ,并将其添加到 .csproj 文件中。

enter image description here

2.添加您可能希望添加到您的用户 secret 中的内容。它包括两种编写 json 对象和简单键/值对的方式。 enter image description here

3.将用户 secret 映射到模型。

 public class KeyVault
{
public string Vault { get; set; }
public string ClientId { get; set; }
public string ClientSecret { get; set; }
}

4.添加配置。安装包 Microsoft.VisualStudio.Web.CodeGeneration.DesignMicrosoft.Extensions.ConfigurationMicrosoft.Extensions.Configuration.UserSecrets

5.绑定(bind)值。这是在 Startup.cs 文件中完成的。 enter image description here

6.使用映射的 secret

public class HomeController : Controller
{
private readonly KeyVault _keyvault;
// I’ve injected twilioAccountDetails into the constructor

public HomeController(IOptions<KeyVault> keyvault)
{
// We want to know if twilioAccountDetails is null so we throw an exception if it is
_keyvault = keyvault.Value ?? throw new ArgumentException(nameof(keyvault));
}
........
}

7.在Program.cs中调用它。 enter image description here

有关如何在 .NET Core Web 应用程序中使用用户 key 的更多详细信息,您可以引用此 article .

关于azure - 如何不从用户 secret 配置中获取空值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55600145/

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