我想将用户密码用于KeyVault clientid等。设置KeyVault时,我从program.cs
调用配置。当我在appsettings.json
中添加值时,一切正常,但是如果我删除它并管理用户机密,则在运行program.cs
时,它始终为null。
在创建的secret.json
中我具有正确的值,并且带有GUID的属性也在我的项目文件中
我还尝试向secret.json
添加键和值,并尝试从控制器获取键和值,并且它也是null。
因此,我的WebHost.CreateDefaultBuilder
中的program.se
似乎没有加载我的secret.json
文件。
如果我将AssUserSecrets
添加到WebHost.CreateDefaultBuilder(args)
中的progam.cs
中,就不会有相同的问题。
我正在使用WebHost.CreateDefaultBuilder
,因此默认情况下应在asp .net core 2.2中使用它
dontnet user-secret list
还将显示我的secret.json
文件中对我来说的值,因此该值在那里,用户秘密已被初始化。
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"]);
});
答案 0 :(得分:1)
我在自己的网站上进行了测试,并且工作正常,这是您可以参考的步骤。
1。右键单击该项目,然后选择Manage User Secrets
。它将在Visual Studio中打开secrets.json文件,您可以在其中添加密钥并将其添加到.csproj文件中。
2。将您希望添加的内容添加到“用户密钥”中。它包括两种写入json对象和简单键/值对的方式。
3。将用户机密映射到模型。
public class KeyVault
{
public string Vault { get; set; }
public string ClientId { get; set; }
public string ClientSecret { get; set; }
}
4。添加配置。
安装软件包Microsoft.VisualStudio.Web.CodeGeneration.Design
和Microsoft.Extensions.Configuration
和Microsoft.Extensions.Configuration.UserSecrets
6。使用映射的机密
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));
}
........
}
有关如何使用User Secrets in a .NET Core Web App
的更多详细信息,可以参考此article。
答案 1 :(得分:0)
它似乎与:Microsoft.Extensions.Configuration.AzureKeyVault
有关因为我立即添加了该nuget,它立即停止工作。
更新:更多信息。似乎最新的Microsoft.Extensions.Configuration.AzureKeyVault为我降级了一些配置库。然后它停止工作。
答案 2 :(得分:0)
我在使用 Host.CreateDefaultBuilder()
时遇到了同样的问题,并发现这是因为我的主机环境不是 Development
。
为了解决这个问题,我在 launchSettings.json
中添加了以下部分:
"environmentVariables": {
"DOTNET_ENVIRONMENT": "Development"
}
<块引用>
以下默认值应用于返回的 HostBuilder: