尝试读取连接字符串的NullReferenceException

时间:2014-01-30 07:21:15

标签: c# sql nullreferenceexception configurationmanager

我有两个项目。一个是网络和另一种是Windows窗体。 Web项目连接到数据库,但是Windows项目抛出一个异常NullReferenceException,读取连接字符串。

我使用相同的类来连接两个项目。使用LINQTOSQL建立连接。

这是我的连接字符串:

<connectionStrings>
    <add name="GPSystemConnectionString"
         connectionString="Data Source=.;Initial Catalog=GPSystem;User ID=***;Password=***"
         providerName="System.Data.SqlClient" />
</connectionStrings>

这就是我读它的方式。

string CS = ConfigurationManager.ConnectionStrings["GPSystemConnectionString"].ConnectionString;

(此行发生异常).....(对象引用未设置为对象的实例。)

注意:我使用相同的类连接两个项目....一个连接但另一个连接失败。

请任何人帮助我!

提前谢谢。

4 个答案:

答案 0 :(得分:6)

您需要在app.config中输入窗口应用程序中的连接字符串。

如果您没有App.Config文件,请添加它。

并输入如下所示的条目

<?xml version="1.0"?>
<configuration>
  <connectionStrings>
    <add name="GPSystemConnectionString"  connectionString="..." />
  </connectionStrings>
</configuration> 

在.cs文件中

using System;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;

var connectionString=ConfigurationManager.ConnectionStrings["GPSystemConnectionString"].ConnectionString;

答案 1 :(得分:2)

如果你想get the configuration section from another assembly使用它:

Assembly assembly = ...; /* get the assembly to read config from */

System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(assembly.Location);

string CS = configuration.ConnectionStrings["GPSystemConnectionString"].ConnectionString;

答案 2 :(得分:0)

在我的情况下,这个问题是由我的64位Machine.Config中的ConnectionString引起的。

C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319\Config

而不是标准的32位

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Config

要更正“项目属性”的“构建”选项卡上的“首选”32位设置 Build tab of Project

答案 3 :(得分:0)

当我在与可执行文件不同的项目/库中拥有数据访问层时,我总是很难解决这个带有var configfile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); var path = configfile.FilePath; 的空引用问题。我经常使用以下内容来帮助在运行时调试配置文件的位置:

Column B