Я использую MVC на Asp.NET Core, и на самом деле Startup не находит мою ConnectionString, написанную в appsettings.json. Я уже пробовал 3 разных способа (2 в комментариях). Не обращайте внимания на "XXX".
Давайте посмотрим : Startup.cs
public void ConfigureServices(IServiceCollection services)
{
[...]
services.AddDbContext<ApplicationDbContext>(options =>
options.UseOracle(Configuration.GetConnectionString("Web")));
//options.UseOracle(Configuration.GetSection("ConnectionStrings")["Web"]));
//options.UseOracle(Configuration.GetSection("Web")["ConnectionString"]));
[...]
}
appsettings.json:
[...]
"ConnectionStrings": {
"Test1": {
"ConnectionString": "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=XX.XX.X.XXX)(PORT=XXXX))(CONNECT_DATA=(SERVICE_NAME=XXX)));User Id=XXXXX;Password=XXXXX;",
"ProviderName": "Oracle.ManagedDataAccess.Client"
},
"Web": {
"ConnectionString": "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=XX.XX.X.XXX)(PORT=XXXX))(CONNECT_DATA=(SERVICE_NAME=XXX)));User Id=XXXXX;Password=XXXXX;",
"ProviderName": "Oracle.ManagedDataAccess.Client"
},
"Test2": {
"ConnectionString": "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=XX.XX.X.XXX)(PORT=XXXX))(CONNECT_DATA=(SERVICE_NAME=XXX)));User Id=XXXXX;Password=XXXXX;",
"ProviderName": "Oracle.ManagedDataAccess.Client"
}
}
[...]
и когда я создаю проект для запуска в браузере, я всегда получаю эту ошибку:
System.ArgumentNullException : 'Значение не может быть нулевым. '
Есть ли у вас какие-либо идеи ?
Метод IServiceCollection.GetConnectionString
просто добавляет префикс ConnectionStrings:
в ключ.
Тогда Configuration.GetConnectionString("Web")
похож на Configuration["ConnectionStrings:Web"]
.
В вашем случае нужно:
Configuration["ConnectionStrings:Web:ConnectionString"]
//or
Configuration.GetConnectionString("Web:ConnectionString")
Да! вам нужно добавить Test1/Web/Test2 ..
public void ConfigureServices (службы IServiceCollection) {
services.AddDbContext<ApplicationDbContext>(options =>
options.UseOracle(Configuration.GetConnectionString("Web:ConnectionString")));
}
Спасибо ! Я узнал это!
Точно. Вы абсолютно правы. Спасибо, сэр!