【发布时间】:2021-03-26 22:50:04
【问题描述】:
似乎与我的数据库的连接根本不起作用,但我不知道为什么。
& 现在让我们看看代码,appsettings.json:
"ConnectionStrings": {
"Web": "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xx.xx.x.xxx)(PORT=xxxx))(CONNECT_DATA=(SERVICE_NAME=xxxxxxx)));User Id=xxxxx;Password=xxxxx;"
}
Startup.cs:
public void ConfigureServices(IServiceCollection services)
{
[...]
services.AddDbContext<ApplicationDbContext>(options =>
options.UseOracle(Configuration.GetConnectionString("Web")));
[...]
}
HomeController.cs:
public class HomeController : Controller
{
[...]
private readonly CoreDataBase dataBase = new CoreDataBase();
[...]
}
CoreDataBase.cs:
public class CoreDataBase : IDisposable
{
private IDatabase _core = null;
public CoreDataBase()
{
_core = Load();
}
private static Database Load()
{
var connectionString = ConfigurationManager.ConnectionStrings["Web"].ConnectionString;
var provider = ConfigurationManager.ConnectionStrings["Web"].ProviderName;
if(provider != "Oracle.ManagedDataAccess.Client")
{
return null;
}
return new Database(connectionString, DatabaseType.OracleManaged, SqlClientFactory.Instance);
}
[...]
}
你有什么想法吗?
【问题讨论】:
-
ConfigurationManager不是从 appsettings.json 中获取值,而是从 App.config 或 Web.config 中获取值。您需要重写CoreDataBase以注入连接字符串设置。 -
从使用配置扩展而不是配置管理器开始。
-
请注意ASP.NET Core use different configuration settings,ASP.NET Core项目模板中使用的应用程序存储配置数据的默认文件是
appsettings.json,与ASP中使用的Web.config不同。网络项目。您可以通过您注入的 IConfiguration 实例从appsettings.json文件中读取这些数据。
标签: c# oracle asp.net-core connection-string configurationmanager