对象引用未设置为从代码中更改 app.config 中连接字符串的对象实例 [重复]

Posted

技术标签:

【中文标题】对象引用未设置为从代码中更改 app.config 中连接字符串的对象实例 [重复]【英文标题】:Object reference not set to an instance of an object changing connection string in app.config from code [duplicate] 【发布时间】:2014-07-18 11:43:44 【问题描述】:

请看下面的代码:

Public Sub GetConnectionString(Dim strCon As String)
            Dim stringtochange As String = ConfigurationManager.ConnectionStrings("GeniedbConnection").ConnectionString 'line 2
            Dim configFile As System.Configuration.Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)
            Dim connectionStringsSection As ConnectionStringsSection
            connectionStringsSection = CType(configFile.GetSection("GeniedbConnection"), ConnectionStringsSection)
            connectionStringsSection.ConnectionStrings("GeniedbConnection").ConnectionString = strCon 'Line 6
            configFile.Save()
        End Sub

我正在尝试更改 app.config 中的连接字符串。第 2 行返回当前连接字符串。第 6 行抛出异常:`"Object reference not set to an instance of an object."这是为什么呢?

【问题讨论】:

看到这个...***.com/questions/16131382/… 这是因为对象引用未设置为对象的实例。关于 SO 有很多类似的问题,其中大多数最终给出了相同的、正确的建议。调试你的代码,看看哪个对象引用没有设置,然后找出从哪里去。 我同意 Lasse 的观点。有一个专门针对这个主题的问题,***.com/questions/4660142/… 【参考方案1】:

第 2 行

Dim stringtochange As String = ConfigurationManager.ConnectionStrings("GeniedbConnection").ConnectionString

与第 6 行不同

connectionStringsSection.ConnectionStrings("GeniedbConnection").ConnectionString = strCon

ConfigurationManager != connectionStringsSection

其中一个为空,connectionStringsSectionconnectionStringsSection.ConnectionStrings("GeniedbConnection")

【讨论】:

以上是关于对象引用未设置为从代码中更改 app.config 中连接字符串的对象实例 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用引用库的 app.config 设置 [重复]

服务引用更改时 app.config 不兼容

配置文件app.config怎么调用呢?

从 app.config 加载配置(如果可用)

在 app.config 中使用 XML 包含或配置引用来包含其他配置文件的设置

EF数据迁移,未将对象引用设置到对象实例