Вы хотите использовать пользовательские секреты API. Смотрите мой пример ниже (на основе ASP.NET 5 Beta 5):
ConfigurationBuilder configurationBuilder = new ConfigurationBuilder(
applicationEnvironment.ApplicationBasePath);
// This reads the configuration keys from the secret store. This allows you to store
// connection strings and other sensitive settings on your development environment, so you
// don't have to check them into your source control provider.
configurationBuilder.AddUserSecrets();
IConfiguration configuration = configurationBuilder.Build();
Вы также должны установить userSecretsId в project.json (см ссылки ниже). Это уникальный идентификатор для ваших проектов секретов и будет необходимо ниже, когда вы создаете новый секрет:
{
"webroot": "wwwroot",
"userSecretsId": "[Your User Secrets ID]",
"version": "1.0.0-*"
...
}
Чтобы добавить/удалить/обновить пользовательские секреты вам нужно установить менеджер секреты, запустив:
dnu commands install SecretManager
Затем используйте менеджер секретов на самом деле добавить/удалить/обновить настройки:
Usage: user-secret [options] [command]
Options:
-?|-h|--help Show help information
-v|--verbose Verbose output
Commands:
set Sets the user secret to the specified value
help Show help information
remove Removes the specified user secret
list Lists all the application secrets
clear Deletes all the application secrets
Use "user-secret help [command]" for more information about a command.
См this и this документации для более Infor мация.
Следует также отметить, что с момента написания (ASP.NET 5 Beta 5) секреты пользователя не зашифрованы! Это изменится позже.
Хорошо, но если сохранить строку подключения в переменной среды в производственной среде, это означает, что мы теряем изоляцию приложений. Что делать, если 2 приложения используют одну и ту же переменную среды (ConnectionString)? Это означает, что у нас должно быть какое-то пространство имен для имен переменных. Это не выглядит хорошо ... Кроме того, это также означает, что приложение может получить доступ к паролю в строке подключения другого приложения (безопасность?) – Daniel
А, конечно. IIS поддерживает идентификаторы пула приложений и загрузку профилей пользователей. Проверь это. Также проверьте вторую предоставленную ссылку и Secrets API. Любой из этих двух вариантов должен решить вашу проблему. –
Я в конечном итоге составил свое собственное решение, путешествуя полностью из корневого каталога в конфиг. {Env} .json, добавив всю конфигурацию. {Env} .json находится в каталогах между ними. Поэтому я могу иметь конфигурацию. {Env} .json в каталоге, который не перезаписывается при публикации веб-сайта, и держите там строку соединения (все еще отсутствует шифрование ...). Я сделал это таким образом, потому что создание пользователя для каждого веб-сайта показалось мне слишком сложным, а интерфейс Secrets скорее предназначен для пользовательской среды. Но я приму ваше решение, потому что я думаю, что это рекомендуемый способ сделать это ... – Daniel