这是我在这里的第一个问题,所以请保持谦虚(并就我如何改进我的问题提供建设性的批评):)
我正在尝试连接到我的Web API项目中的Oracle数据库。
该项目具有一个app.config和一个web.config。
我不知道为什么要同时拥有这两者,但是在设置(带有Web API的空asp.net)项目时会附带它。
这是我的代码,用于连接数据库并获取连接字符串,这也是我获取NullReferenceException的地方:
// create a connection to the database
using (var con = new OracleConnection(ConfigurationManager.ConnectionStrings["Oracle"].ConnectionString))
我已经包括了适当的使用声明:
using Oracle.ManagedDataAccess.Client;
using System.Configuration;
using System.Data;
using Oracle.ManagedDataAccess.Types;
我的web.config文件如下:
到目前为止我尝试过的事情:
改用System.Web.Configuration.WebConfigurationManager
检查参考资料等
添加AppSettings键和值,然后尝试从web.config文件中读取。还返回null。
除了运行时NullReferenceException外,我没有收到任何其他错误。
我希望这是足够的信息以提出解决方案。如果没有,请告诉我,我会提供更多信息。
尝试以下方法。 它在System.Configuration中:
var con = ConfigurationManager.ConnectionStrings["Oracle"].ConnectionString;
另外,您可能要尝试在配置中不使用clear />。
是的,对不起。 这就是我最初尝试的方法,在我的问题结尾时,我提到了这一点。 忘记在代码示例中将其更改为原始格式。 底线:这对我没有用。
事实证明,这是一个非常简单的修复程序,通常是这种情况。
如前所述,我有一个app.config和一个web.config。
在web.config中是Oracle客户端设置,因此由于这一点和以前的经验,我认为连接字符串也应该存在。
但是在app.config中定义它时,它可以工作!
但是,与2个配置文件混淆,因为人们希望在web.config中定义连接字符串,而不是在app.config中定义。
底线:ConnectionStrings应该在app.config中。
这为我解决了。
我的解决方案中只有控制台应用程序项目用于测试时,才使用过app.config文件。 我将连接字符串存储在web.config中,如下所示:
然后在我的代码中引用它,如下所示:
protected const string ConnectionString = @"NAME";
是因为您告诉它它知道从Web.config获取它的ConnectionString吗? 然后我可以像下面这样使用它? new OracleConnection(ConnectionString);
不,您可以随意命名。 如果在web.config中正确设置,则连接名称在代码范围内可用。 所以我可以称其为受保护的常量字符串SomeWhereOverTheRainbow = @" Name"; 那也行得通。
原来web.config没有被读取,但是app.config却被读取。 不知道为什么,但是问题是解决者:)