C#Web API连接字符串web.config未被读取

时间:2016-08-03 14:56:27

标签: c# asp.net-web-api web-config connection-string

这是我的第一个问题,所以请保持温和(并就如何改进我的问题提出建设性的批评):)

我正在尝试连接到我的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文件如下:

<configuration>
  <oracle.manageddataaccess.client>
    <version number="*">
      <dataSources>
        <!-- Customize these connection alias settings to connect to Oracle DB -->
        <dataSource alias="ALIAS" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=IPOFSERVER)(PORT=PORTOFSERVER))(CONNECT_DATA=(SERVICE_NAME=SERVICENAME)));User Id=USERNAME;Password=PASSWORD;" />
      </dataSources>
    </version>
  </oracle.manageddataaccess.client>
  <connectionStrings>
    <clear/>
    <add name="Oracle" connectionString="Data Source=ALIAS;" providerName="Oracle.ManagedDataAccess.Client"/>
  </connectionStrings>
</configuration>

到目前为止我尝试过的事情:

  • 使用System.Web.Configuration.WebConfigurationManager代替
  • 检查参考资料等。
  • 添加AppSettings键和值,并尝试从web.config文件中读取它。也返回null。

除了运行时NullReferenceException之外,我没有收到任何错误。 我希望这是提供解决方案的足够信息。如果没有,请告诉我,我会提供额外的信息。

3 个答案:

答案 0 :(得分:1)

尝试以下方法。它在System.Configuration:

var gender = Boy
var age = 15
var favoriteSeason = Winter
var favoriteHoliday = New Years

另外,您可能想尝试没有清除/&gt;在你的配置中。

答案 1 :(得分:0)

当我在我的解决方案中有一个控制台应用程序项目进行测试时,我只使用了app.config文件。我将我的连接字符串存储在web.config中,如下所示:

<connectionStrings>
    <add name="NAME" connectionString="Server=Server;Initial Catalog=TABLE_NAME;User ID=ID;Password=PASSWORD;Application Name='WEBSITE'" />
</connectionStrings>

然后我在我的代码中引用它:

protected const string ConnectionString = @"NAME";

答案 2 :(得分:0)

原来这是一个非常简单的修复,通常就是这种情况。 如上所述,我有一个app.config和一个web.config。

在web.config中是Oracle客户端设置,因此,由于这和以前的经验,我认为连接字符串也应该在那里。 但是在app.config中定义它时,它可以工作! 但是会混淆2个配置文件,因为人们期望在web.config中定义连接字符串,而不是app.config。

底线: ConnectionStrings应该在app.config中。

为我修好了。