var connection = ConnectionFactory.GetConnection(
    ConfigurationManager.ConnectionStrings["Test"]
    .ConnectionString, DataBaseProvider);

这是我的app。config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <connectionStrings>
        <add name="Test" connectionString="Data Source=.;Initial Catalog=OmidPayamak;Integrated Security=True" providerName="System.Data.SqlClient" />
    </connectionStrings>
</configuration>

但是当我的项目运行时,这是我的错误:

对象引用未设置为对象的实例。


当前回答

上面的答案没有详细说明connectionStrings索引中的值从何而来。

如上所述,要获得连接字符串,你说:

string conStr = ConfigurationManager.ConnectionStrings["XXX"].ToString();

要使用正确的XXX值,请访问您的主要项目web。配置文件,并寻找以下一段代码:

<connectionStrings>
    <add name="Authentication" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;Initial Catalog=Authentication;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\Authentication.mdf" providerName="System.Data.SqlClient" />
</connectionStrings>

当它说name=时,后面引号中的文本就是上面代码中使用的XXX的值。在我上面的例子中,它恰好是Authentication

其他回答

似乎问题不在于引用,你得到的connectionstring为空,所以请确保你已经将该值添加到配置文件中,你正在运行的项目意味着首先启动/执行的主程序/库。

这个问题中的OP可能试图在dll中使用App.Config。

在这种情况下,代码实际上是试图访问可执行文件的App.Config,而不是dll。因为没有找到名称,所以返回Null,因此出现了异常。

下面的帖子可能会有所帮助: DLL的app.config中的ConnectionString为空

由于这是一个非常常见的问题,我准备了一些Visual Studio的屏幕截图,让它更容易遵循4个简单的步骤。

我引用了系统。配置库和我有同样的错误。 调试文件没有他们的app.config,手动创建这个文件。 错误是,我解决了这个复制文件“appname.exe。debug文件夹中的Config”。IDE没有创建该文件。

你有没有试过:

var connection = new ConnectionFactory().GetConnection(
    ConfigurationManager.ConnectionStrings["Test"]
    .ConnectionString, DataBaseProvider);