0

我知道这仍处于预览阶段,但我只是想确保我没有做错任何事情,因为我过去曾做过类似的事情。我在属性中设置了环境变量: 在此处输入图像描述

我正在尝试设置我的测试:

[TestInitialize]
public void Initialize()
{
    var test = Environment.GetEnvironmentVariables();
    // test enumerates all the Env variables, don't see it there
    var connectionString = Environment.GetEnvironmentVariable("CONNECTION_STRING");
    if (string.IsNullOrWhiteSpace(connectionString)) // so this is obviously null
        throw new ArgumentNullException("CONNECTION_STRING");
    _ConnectionString = connectionString;
}

正如您从我的评论中看到的那样,没有找到/加载环境变量。

我错过了什么?谢谢你。

4

2 回答 2

5

我假设您使用的是 Visual Studio 2022,因为您使用的是 .NET 6 和最小主机(即 no Startup.cs)?

一般的偏好是不要将信息存储在环境变量中,因为这些信息通常会上传到 GitHub,并且可以被拖网并用于对付你。

对于本地开发机密,首选是使用secrets.json文件存储这些机密。在Safe Storage of Secrets中提供了有关如何执行此操作的信息,在访问配置文件信息中提供了有关访问配置文件的详细信息

对于 TL;DR: Crowd,以下步骤可能会有所帮助(这是我在使用 .NET 6 的 Blazor 应用程序中所做的):

  1. 在 Visual Studio 2022 中,右键单击相关项目并选择“管理用户机密”。这将创建一个本地secrets.json文件并打开它。它还将在您的项目磁贴中为UserSecretsId.
  2. 在此文件中将您的秘密创建为 JSON 键值对,就像您为环境变量所做的那样。
  3. 转到项目中的“连接服务”并配置Secrets.json服务。
  4. 将“用户机密”添加到您的配置文件中;这将取决于发生这种情况的确切位置。
  5. 将其IConfiguration注入您的控制器并将其保存到一个字段中。
  6. 调用您要使用的数据:
    {yourConfigurationFieldName}.GetValue<string>({yourJsonKey})
    
于 2021-09-17T00:56:20.470 回答
0

在 Visual Studio 2022 中,您可以通过修改 launchSettings.json 文件的以下部分来访问开发环境变量。

“environmentVariables”:{“ASPNETCORE_ENVIRONMENT”:“开发”,“VaultUri”:“https://xxx.vault.azure.net/”,“AZURE_USERNAME”:“xxx@user.com”}

其中 VaultUri 是您的环境变量的名称。

于 2022-02-23T16:20:14.397 回答