В настоящее время я запускаю ASP.NET Core Web API (версия 2.1) и пытаюсь прочитать пользовательские переменные среды, которые я установил на своем локальном компьютере.Переменные среды, которые я установил, предназначены для идентификаторов клиента AWS, секретов и т. Д. Я пытаюсь получить доступ к значениям этих переменных среды в методе ConfigureServices внутри класса Startup.cs.Тем не менее, следующее возвращает 'null', независимо от того, что я пытаюсь.
var result = Environment.GetEnvironmentVariable("<ENV_VARIABLE>");
Чтобы предоставить больше возможностей, мне нужно прочитать некоторые клиентские идентификаторы и секреты и передать их конструктору соответствующего класса.Теперь, чтобы следовать рекомендациям, я не включаю эти идентификаторы и секреты в файл appsettings.json.Вместо этого я изменил файл ~. / Bash_profile на своем Mac и написал следующее:
# Set the General AWS Variables
export AWS_ACCESS_KEY_ID=<>
export AWS_SECRET_ACCESS_KEY=<>
export AWS_DEFAULT_REGION=<>
# Set the AWS Cognito Variables
export COGNITO_USER_POOL_ID=<>
export COGNITO_USER_POOL_CLIENT_ID=<>
export COGNITO_USER_POOL_CLIENT_SECRET=<>
Я также проверил, что эти переменные среды сохранились, запустив
printenv
Затем я сделалметод ConfigureServices внутри класса Startup.cs выглядит следующим образом:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
// The following 3 variables are null
var userPoolId = Environment.GetEnvironmentVariable("COGNITO_USER_POOL_ID");
var userPoolClientId = Environment.GetEnvironmentVariable("COGNITO_USER_POOL_CLIENT_ID");
var userPoolClientSecret = Environment.GetEnvironmentVariable("COGNITO_USER_POOL_CLIENT_SECRET");
var amazonCognitoIdentityProvider = new AmazonCognitoIdentityProviderClient(RegionEndpoint.USEast1);
var cognitoUserPool = new CognitoUserPool(userPoolId, userPoolClientId, amazonCognitoIdentityProvider, userPoolClientSecret);
services.AddSingleton<IAmazonCognitoIdentityProvider>(x => amazonCognitoIdentityProvider);
services.AddSingleton<CognitoUserPool>(x => cognitoUserPool);
services.AddCognitoIdentity();
}
Однако каждый раз возвращаемое значение «Environment.GetEnvironmentVariable (...)» равно «null».Я не уверен, что я делаю неправильно.Я предполагаю, что у меня неправильное понимание переменных среды и / или как ASP.NET Core их получает, но я был бы очень признателен за помощь в том, почему мой текущий код не читает переменные среды.
Заранее спасибо!
РЕДАКТИРОВАТЬ:
Я должен также упомянуть, что я пытаюсь сделать это на Mac.Я не уверен, что это изменит подход к извлечению переменной среды, но я просто хочу упомянуть это здесь, если это так!