从 VB.Net 中的 app.config 获取动态更新的连接字符串

Posted

技术标签:

【中文标题】从 VB.Net 中的 app.config 获取动态更新的连接字符串【英文标题】:Fetching dynamically updated connection string from app.config in VB.Net 【发布时间】:2012-10-07 09:05:22 【问题描述】:

我在app.config中有如下连接字符串

<add name="CONN" connectionString="SERVER=SERVER\SQLEXPRESS;DATABASE=TRIAL_LINK;uid=sa;pwd=trial"
        providerName="System.Data.SqlClient" />

我有一个名为 DBLinker 的表单,我在其中为用户提供了一个选项来选择其他一些服务器和数据库。 例如,我将服务器名称选择为“MAILSERVER”,将数据库选择为“Actual”。我正在使用以下代码覆盖 app.config 文件。

Dim config As System.Configuration.Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)

Dim mySection As ConnectionStringsSection = DirectCast(config.GetSection("CONN"),ConnectionStringsSection)
Dim conStr As String = "SERVER=MAILSERVER;DATABASE=Actual;uid=sa;pwd=trial"

config.ConnectionStrings.ConnectionStrings("CONN").ConnectionString = conStr
config.Save(ConfigurationSaveMode.Full)


ConfigurationManager.RefreshSection(config.AppSettings.SectionInformation.Name)

在此代码之后,我试图打开应用程序的登录表单。但是当我在这里尝试访问连接字符串时,它正在获取以前的字符串而不是更新的字符串。

【问题讨论】:

【参考方案1】:

How to programmatically override web.config settings

您似乎无法在运行时更改 web.config 并使其在应用程序运行时生效。您可以通过将设置作为字符串的基本部分来解决此问题,然后使用用户选择来构建其余部分。您可以随时将新字符串保存在 Session、cookie 或 Db 中,以便在需要时方便使用,具体取决于您的需要。

希望这会有所帮助。

【讨论】:

谢谢,但是这个过程不能用 DB 来实现。【参考方案2】:
 Public Sub updateConfigFile(ByVal con As String)
        'updating config file
        Dim XmlDoc As New XmlDocument()
        'Loading the Config file
        XmlDoc.Load(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile)
        For Each xElement As XmlElement In XmlDoc.DocumentElement
            If xElement.Name = "connectionStrings" Then
                'setting the coonection string
                xElement.FirstChild.Attributes(2).Value = con
            End If
        Next
        'writing the connection string in config file
        XmlDoc.Save(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile)
    End Sub

我用这段代码解决了这个问题。

【讨论】:

以上是关于从 VB.Net 中的 app.config 获取动态更新的连接字符串的主要内容,如果未能解决你的问题,请参考以下文章

在 VB.net 中,如何保存对 app.config 的更改

VB.Net 如何将 app.config 文件移动到自定义位置

如何从 VB.NET 中的 USB 端口获取数据

从动态 htmlTable 获取 vb.net 中的数据

使用 Json.NET 从 VB.NET 中的 JSON 获取信息

VB.NET 2003 将 log4net.config 复制到 bin 文件夹