Я не могу понять, как извлечь строки подключения в ASP. NET Core. Я провел два дня, пробуя разные вещи, и не могу заставить его работать.
Я пробовал следующие методы:
- Использование ConfigurationManager.AppSettings a Count возвращает 0
- Используя ConfigurationManager.ConnectionStrings []. ConnectionString - единственная существующая строка соединения -. \ SQLEXPRESS (необходимо использовать индекс вместо строка в ConnectionStrings []), указание имени соединения приводит к тому, что ссылка на объект не установлена. Ошибка
- При попытке использовать WebConfigurationManager не удается найти способ его добавления. Я пробовал System.Web.Configuration, пакеты NuGet, ссылки.
- Использование IConfiguration и внедрение зависимостей - я понятия не имею, как читать строку подключения (как ссылаться на контроллера в модели и считайте значение строки подключения "xxx")
ConfigurationManager.ConnectionStrings["SupplierDB"].ConnectionString
// NullReferenceException: Object reference not set to an instance of an object.
ConfigurationManager.ConnectionStrings[0].ConnectionString
// data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true
ConfigurationManager.AppSettings.Count.ToString();
// Returns 0
У меня есть одинаковые строки подключения, указанные в обоих appsettings. json и web.config. Может кто-нибудь, пожалуйста, направьте меня в правильном направлении, поскольку я в настоящее время полностью потерян, поскольку ничего не работает.
appsettings. json
{
"ConnectionStrings": {
"CustomerDB": "Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=Customer_Db;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
"SupplierDB": "Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=Supplier_Db;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*"
}
web .config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="CustomerDB" providerName="System.Data.SqlClient" connectionString="Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=Customer_Db;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False"/>
<add name="SupplierDB" providerName="System.Data.SqlClient" connectionString="Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=Supplier_Db;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False"/>
</connectionStrings>
</configuration>