В моем приложении Asp.net Core 2.0 я пытаюсь реализовать дизайн, чтобы не использовать зависимость конструктора IConfiguration для строк подключения в моем проекте библиотеки классов, как советовал @Nkosi здесь.
В этом подходе невозможно связать экземпляр конфигурации с новым экземпляром типа, как в следующих строках кода.
public void ConfigureServices(IServiceCollection services) {
//...
var settings = Configuration
.GetSection("ConnectionStrings:OdeToFood")
.Get<ConnectionSetings>();
//...verify settings (if needed)
services.AddSingleton(settings);
}
public class ConnectionSetings
{
public string Name { get; set; }
}
Я вижу, как Configuration.GetSection("ConnectionStrings:OdeToFood")
возвращает атрибуты «Ключ», «Путь» и «Значение», но не выполняет привязки и возвращает значение null в настройках.
Я видел похожие вопросы, в которых люди рекомендовали решения, подобные следующим, но ни одно из них не работает для меня.
services.Configure<ConnectionsSetings>(Configuration.GetSection("ConnectionStrings:OdeToFood"));
Также,
Configuration
.GetSection("ConnectionStrings:OdeToFood").Bind<>
Ниже приведен файл appsettings.json.
{
"Greeting": "Hello!!!",
"ConnectionStrings": {
"OdeToFood": "Server=(localdb)\\MSSQLLocalDB;Database=OdeToFood;Trusted_Connection=True;MultipleActiveResultSets=true"
}
}
Ниже приведен непосредственный снимок экрана с выводом Configuration.GetSection, где я вижу ключ, путь и значение.
На следующем снимке экрана видно, что переменная настройки становится нулевой.