Asp.net core 2.0 ASP.NET核心应用程序,带有;“用户机密”;仅在macOS命令行上失败

Asp.net core 2.0 ASP.NET核心应用程序,带有;“用户机密”;仅在macOS命令行上失败,asp.net-core-2.0,Asp.net Core 2.0,我正在使用ASP.NET Core 2.1.4应用程序 明确地说,这个问题是关于在macOS中从命令行调用dotnet run;在Windows中为同一应用程序调用dotnet run时,此问题不存在。此外,在VisualStudio中运行应用程序在macOS和Windows上都能正常工作 在命令行中键入dotnet用户机密列表,将返回预期的输出: TokenProviderOptions:SecretKey = … TokenProviderOptions:Issuer = … TokenPr

我正在使用ASP.NET Core 2.1.4应用程序

明确地说,这个问题是关于在macOS中从命令行调用
dotnet run
;在Windows中为同一应用程序调用
dotnet run
时,此问题不存在。此外,在VisualStudio中运行应用程序在macOS和Windows上都能正常工作

在命令行中键入
dotnet用户机密列表
,将返回预期的输出:

TokenProviderOptions:SecretKey = …
TokenProviderOptions:Issuer = …
TokenProviderOptions:Audience = …
我还可以按预期访问
~/.microsoft/usersecrets/
文件夹中的
secrets.json
文件:

{
  "TokenProviderOptions": {
    "SecretKey": "…",
    "Issuer": "…",
    "Audience": "…"
  }
}
下面是我如何访问Startup.cs中的秘密:

// 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;
正如我前面提到的,在Windows的命令提示符和VisualStudio中运行时没有问题。而且,在macOS的Visual Studio中,我可以调试并查看带有三项的
tokenOptions
列表。但是,当我在终端中键入
dotnet run
时,我在第一个
.Single()
处收到此错误:


要在macOS的命令行上成功运行此功能,我还缺少一个额外的步骤吗?

secret manager的设计仅用于开发。因此,它只在
ASPNETCORE\u环境
设置为
Development
时起作用。这可以在您的环境变量中完成

如果不希望修改环境变量,可以在program.cs文件中使用以下内容:

public static IWebHost BuildWebHost(string[] args)
{

    var config = new ConfigurationBuilder().AddUserSecrets("myid").Build();

    return WebHost.CreateDefaultBuilder(args)
            .UseConfiguration(config)
            .UseStartup<Startup>()
公共静态IWebHost BuildWebHost(字符串[]args)
{
var config=new ConfigurationBuilder().AddUserSecrets(“myid”).Build();
返回WebHost.CreateDefaultBuilder(args)
.UseConfiguration(配置)
.UseStartup()

感谢您的快速响应!我将
ASPNETCORE\u ENVIRONMENT=Development
添加到我的
.bash\u profile
中,现在它工作得很好。也许这个环境变量在安装过程中自动添加到Windows中…不确定-很高兴它现在也能在我的macOS上工作。这似乎不是特定于操作系统的。在我解决这个问题之前,我在windows中遇到过一段时间。顺便说一句,我发现Visual Studio在windows上使用了
launchSettings.json
文件,该文件已经有
“environmentVariables”:{“ASPNETCORE\u ENVIRONMENT”:“Development”}
inside.yep,我注意到了。这就是过去造成很多混乱的原因。虽然这个文件可以让网站正常工作,但这个文件不用于其他命令,如ef迁移。这就是我必须设置环境变量的主要原因。我甚至对此提出了一个问题,并将其放在赏金上
public static IWebHost BuildWebHost(string[] args)
{

    var config = new ConfigurationBuilder().AddUserSecrets("myid").Build();

    return WebHost.CreateDefaultBuilder(args)
            .UseConfiguration(config)
            .UseStartup<Startup>()