Я настроил свои данные AppSettings в файле appsettings / Config .json следующим образом:
{
"AppSettings": {
"token": "1234"
}
}
Я искал в Интернете, как читать значения AppSettings из файла .json, но я не смог получить ничего полезного.
Я попытался:
var configuration = new Configuration();
var appSettings = configuration.Get("AppSettings"); // null
var token = configuration.Get("token"); // null
Я знаю, с ASP.NET 4.0 вы можете сделать это:
System.Configuration.ConfigurationManager.AppSettings["token"];
Но как мне это сделать в ASP.NET Core?
c#
.net
asp.net-core
.net-core
Oluwafemi
источник
источник
Ответы:
Это было несколько поворотов. Я изменил этот ответ, чтобы быть в курсе ASP.NET Core 2.0 (по состоянию на 26/02/2018).
В основном это взято из официальной документации :
Для работы с настройками в приложении ASP.NET рекомендуется создавать экземпляры только
Configuration
вStartup
классе вашего приложения . Затем используйте шаблон параметров для доступа к отдельным настройкам. Допустим, у нас естьappsettings.json
файл, который выглядит так:И у нас есть объект POCO, представляющий конфигурацию:
Теперь мы строим конфигурацию в
Startup.cs
:Обратите внимание, что по умолчанию
appsettings.json
будет зарегистрирован в .NET Core 2.0. Мы также можем зарегистрироватьappsettings.{Environment}.json
файл конфигурации для каждой среды, если это необходимо.Если мы хотим внедрить нашу конфигурацию в наши контроллеры, нам нужно зарегистрировать ее во время выполнения. Мы делаем это через
Startup.ConfigureServices
:И мы вводим это так:
Полный
Startup
класс:источник
"1.0.0-beta4"
по моему версия не работает"1.0.0-alpha4"
. Большое спасибо!Argument 2: cannot convert from 'Microsoft.Extensions.Configuration.IConfigurationSection' to 'System.Action<....Settings>'
Microsoft.Extensions.Options.ConfigurationExtensions
все заработало как положено.Прежде всего: имя сборки и пространство имен Microsoft.Framework.ConfigurationModel было изменено на Microsoft.Framework.Configuration. Так что вы должны использовать: например,
как зависимость в
project.json
. Используйте бета5 или 6, если у вас не установлено 7. Тогда вы можете сделать что-то подобное вStartup.cs
.Если вы затем хотите получить переменную из config.json, вы можете получить ее сразу, используя:
или вы можете создать класс с именем AppSettings следующим образом:
и настройте сервисы так:
и затем получить к нему доступ, например, через контроллер, как это:
источник
Configuration.Get<AppSettings>()
для десериализации всего файла вместо определенного раздела.В .NET Core 2.0 все немного изменилось. Конструктор запуска принимает объект конфигурации в качестве параметра, поэтому использовать его
ConfigurationBuilder
не обязательно. Вот мой:Мой POCO -
StorageOptions
объект, упомянутый вверху:И конфигурация на самом деле является подразделом моего
appsettings.json
файла с именемAzureStorageConfig
:Единственное, что я добавлю, это то, что, поскольку конструктор изменился, я не проверял, нужно ли что-то делать для загрузки,
appsettings.<environmentname>.json
а не наоборотappsettings.json
.источник
public HomeController(IOptions<StorageOptions> settings)
, я получаю это сообщение об ошибке: Сложные типы, связанные с моделью, не должны быть абстрактными или значениями и должны иметь конструктор без параметров.С .NET Core 2.2, и самым простым способом ...
appsettings.json
автоматически загружается и доступен через конструктор или инъекцию действия, а также естьGetSection
методIConfiguration
. Там нет необходимости изменятьStartup.cs
или,Program.cs
если все, что вам нужноappsettings.json
.источник
var myValue = config["MyKey"]
Если вы просто хотите получить значение токена, используйте
Configuration["AppSettings:token"]
источник
.NET Core 3.0
Может быть, это не лучший способ получить значение из appsettings.json , но он прост и работает в моем приложении !!
Файл appsettings.json
контроллер:
На вершине :
В вашем коде:
источник
Следующее работает для консольных приложений;
Установите следующие пакеты NuGet (
.csproj
);Создать
appsettings.json
на корневом уровне. Щелкните правой кнопкой мыши и выберите «Копировать в выходной каталог» как « Копировать, если новее ».Пример файла конфигурации:
Program.cs
configurationSection.Key
иconfigurationSection.Value
будет иметь свойства конфигурации.источник
Для .NET Core 2.0 вы можете просто:
Объявите ваши пары ключ / значение в appsettings.json:
Вставьте службу конфигурации в startup.cs и получите значение, используя службу
источник
Я сомневаюсь, что это хорошая практика, но она работает на местном уровне. Я обновлю это, если произойдет сбой при публикации / развертывании (для веб-службы IIS).
Шаг 1 - Добавьте эту сборку в начало вашего класса (в моем случае, класса контроллера):
Шаг 2 - Добавьте это или что-то вроде этого:
Шаг 3 - Назовите значение вашего ключа, выполнив это (возвращает строку):
источник
appsettings.json
находится в правильном каталогеПросто дополнил Юваль Ицчаков ответ.
Вы можете загрузить конфигурацию без функции компоновщика, вы можете просто вставить ее.
источник
В дополнение к существующим ответам я хотел бы отметить , что иногда это может быть полезно иметь методы расширения для
IConfiguration
ради простоты.Я сохраняю конфигурацию JWT в appsettings.json, поэтому мой класс методов расширения выглядит следующим образом:
Это экономит много строк, и вы просто пишете чистый и минимальный код:
Также можно зарегистрировать
IConfiguration
экземпляр как синглтон и внедрить его везде, где вам нужно - я использую контейнер Autofac, вот как вы это делаете:Вы можете сделать то же самое с MS Dependency Injection:
источник
Вот полный пример использования ASP.NET Core!
articles.json
ArticleContainer.cs
Startup.cs
Index.cshtml.cs
Index.cshtml.cs
источник
Они просто продолжают что-то менять - только что обновив Visual Studio и взяв всю бомбу проекта, на пути к восстановлению и новый способ выглядит так:
Я продолжал пропускать эту строку!
источник
They just keep changing things
, Это. Почти каждый ответ на этой странице относится только к конкретной версии .Net Core..NET Core 2.1.0
3. Установите следующие зависимости:
4. Затем, ВАЖНО: щелкните правой кнопкой мыши файл appsettings.json -> щелкните Свойства -> выберите Копировать, если новее:
Наконец, вы можете сделать:
конфиг [ "key1"]
Учитывая, что мой конфигурационный файл будет выглядеть так:
источник
Вы можете попробовать ниже код. Это работает для меня.
Здесь я создал один класс, чтобы получить строку подключения и настройки приложения.
В файле Startup.cs нужно зарегистрировать класс, как показано ниже.
источник
Для ASP.NET Core 3.1 вы можете следовать этой документации:
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?view=aspnetcore-3.1
При создании нового проекта ASP.NET Core 3.1 вы увидите следующую строку конфигурации
Program.cs
:Это позволяет следующее:
Это означает, что вы можете ввести
IConfiguration
и извлекать значения с помощью строкового ключа, даже вложенные значения. подобноIConfiguration ["Parent:Child"];
Пример:
appsettings.json
WeatherForecast.cs
источник
Это был "обман"? Я только что сделал мою конфигурацию в классе Startup статической, и затем я могу получить к ней доступ из любого места:
источник
Получить его внутри контроллера как объект через вызов
Get<YourType>()
:источник
Сначала вы должны внедрить IConfiguration, а затем для чтения из настроек приложения, вы можете использовать один из следующих методов:
Получить данные раздела
Получить значение в разделе
Получить вложенное значение в разделе
источник
Способ .NET Core 2.2
(Без сомнения, Microsoft снова изменит его на что-то совершенно другое в следующей версии .NET.)
1. appSettings.json
Это может выглядеть примерно так. Здесь мы будем загружать Setting1 и Setting2
2. AppSettings.cs
Класс POCO для хранения Setting1 и Setting2. Мы будем загружать appsettings.json в этот объект класса. Структура класса POCO должна соответствовать файлу JSON, при желании свойства могут быть вложены в другие свойства / классы.
3 Startup.cs
Загрузите appSettings.json в свой объект AppSettings и начните использовать его:
источник
С последней версией netcoreapp 3.1 вы можете сделать это довольно просто без каких-либо сторонних зависимостей.
Я создал суть для этого , но вы можете использовать этот класс для чтения файла JSON и возврата динамических свойств.
Я специально сделал это, чтобы я мог использовать appconfig.json в своем консольном приложении dotnet. Я просто поместил это в мою
Program.Main
функцию:И это вернет
dynamic
объект для свойства. (JsonElement, если это не примитив). Мойappsettings.json
файл выглядит так:источник