我正在使用dotnet-user-secrets和ASP.NET Core 2.1.4应用程序。
要明确的是,这个问题是关于从macOS 中的命令行调用dotnet run
;在Windows中为同一应用程序调用{{1}}时,此问题不存在。此外,从Visual Studio中运行应用程序在macOS和Windows上都按预期工作。
在命令行键入dotnet run
会返回预期的输出:
dotnet user-secrets list
我还可以按预期访问TokenProviderOptions:SecretKey = …
TokenProviderOptions:Issuer = …
TokenProviderOptions:Audience = …
文件夹中的secrets.json
文件:
~/.microsoft/usersecrets/<userSecretsId>
以下是我如何访问{
"TokenProviderOptions": {
"SecretKey": "…",
"Issuer": "…",
"Audience": "…"
}
}
内的秘密:
Startup.cs
正如我之前提到的,这在Windows中的命令提示符和Visual Studio中没有任何问题。而且,从macOS中的Visual Studio,我可以调试并查看包含这三个项目的// Configure tokens
var tokenOptions = Configuration
.GetSection("TokenProviderOptions")
.GetChildren()
.ToList();
string
secretKey = tokenOptions.Single(x => x.Key.Equals("SecretKey")).Value,
issuer = tokenOptions.Single(x => x.Key.Equals("Issuer")).Value,
audience = tokenOptions.Single(x => x.Key.Equals("Audience")).Value;
列表。但是,当我在终端中输入tokenOptions
时,我在第一个dotnet run
处收到此错误:
.Single()
我是否缺少额外的步骤来从macOS命令行成功运行?
答案 0 :(得分:2)
秘密经理的目的只是为了开发。因此,只有在ASPNETCORE_ENVIRONMENT
设置为Development
时,它才有效。这可以在您的环境变量中完成。
如果您不想修改环境变量,可以在program.cs文件中使用以下命令:
public static IWebHost BuildWebHost(string[] args)
{
var config = new ConfigurationBuilder().AddUserSecrets("myid").Build();
return WebHost.CreateDefaultBuilder(args)
.UseConfiguration(config)
.UseStartup<Startup>()