Настройки приложения.Net Core
Я пытаюсь добавить appsettings.json и следовал много учебников и до сих пор не могу это сделать.
Я создаю appsettings.json
{
"option1": "value1_from_json",
"ConnectionStrings": {
"DefaultConnection": "Server=,\\SQL2016DEV;Database=DBName;Trusted_Connection=True"
},
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Warning"
}
}
}
Добавьте мой класс:
public class MyOptions
{
public string Option1 { get; set; }
}
public class ConnectionStringSettings
{
public string DefaultConnection { get; set; }
}
тогда на моем Startup.cs
public IConfiguration Configuration { get; set; }
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true);
if (env.IsDevelopment())
{
builder.AddUserSecrets<Startup>();
}
builder.AddEnvironmentVariables();
Configuration = builder.Build();
}
а также:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddScoped<IDataService<Sale>, DataService<Sale>>();
// add My services
// Register the IConfiguration instance which MyOptions binds against.
services.AddOptions();
// Load the data from the 'root' of the json file
services.Configure<MyOptions>(Configuration);
// load the data from the 'ConnectionStrings' section of the json file
var connStringSettings = Configuration.GetSection("ConnectionStrings");
services.Configure<ConnectionStringSettings>(connStringSettings);
}
а также внедрил зависимость в конструктор контроллера.
public class ForecastApiController : Controller
{
private IDataService<Sale> _SaleDataService;
private readonly MyOptions _myOptions;
public ForecastApiController(IDataService<Sale> service, IOptions<MyOptions> optionsAccessor)
{
_SaleDataService = service;
_myOptions = optionsAccessor.Value;
var valueOfOpt1 = _myOptions.Option1;
}
}
РЕДАКТИРОВАНИЕ: проблема в том, что я получаю Конфигурация подчеркнута красным
services.Configure<MyOptions>(Configuration);
Ошибка CS1503
Аргумент 2: невозможно преобразовать из "Microsoft.Extensions.Configuration.IConfiguration" в "System.Action Exercise.Models.MyOptions
Я знаю, что есть похожие вопросы, объясняющие, как: Настройки приложения ASP.NET Core MVC
но это не работает для меня
ура
2 ответа
Вы включили правильное пространство имен?
using Microsoft.Extensions.DependencyInjection;
Также у вас была ссылка на:
Microsoft.Extensions.Options.ConfigurationExtensions
В вышеприведенной сборке мы имеем:
public static IServiceCollection Configure<TOptions>(this IServiceCollection services, IConfiguration config) where TOptions : class;
Скорее всего, вы используете метод расширения из Microsoft.Extensions.Options
сборка (что не так)
public static IServiceCollection Configure<TOptions>(this IServiceCollection services, Action<TOptions> configureOptions) where TOptions : class;
Убедитесь, что вы импортировали все необходимое и у вас установлены необходимые пакеты. Тогда вы можете сделать следующее
services.Configure<MyOptions>(options => Configuration.GetSection("options1").Bind(options));
это приведет к тому, что параметры будут обновляться во время выполнения всякий раз, когда вы изменяете настройки приложений программно.