代码之家  ›  专栏  ›  技术社区  ›  Matt Connolly

可以在运行时更改connectionString配置值吗?

  •  9
  • Matt Connolly  · 技术社区  · 15 年前

    是否可以在运行时更改app.config中的connectionString值?根据 the MSDN documentation 当ConnectionString属性“获取或设置连接字符串”时,应该是可能的。

    我的代码如下:

    ConnectionStringSettings mainConnection = ConfigurationManager.ConnectionStrings["mainConnection"];
    mainConnection.ConnectionString = "Data Source=SERVER;Initial Catalog=" + NewDatabaseName + ";Integrated Security=True";
    

    我收到的错误是:“未处理的异常:System.Configuration.ConfigurationErrorException:配置是只读的。”

    5 回复  |  直到 9 年前
        1
  •  17
  •   JonH    15 年前
    Configuration myConfiguration = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~"); 
        myConfiguration.ConnectionStrings.ConnectionStrings("myDatabaseName").ConnectionString = txtConnectionString.Text; 
        myConfiguration.AppSettings.Settings.Item("myKey").Value = txtmyKey.Text; 
        myConfiguration.Save(); 
    

    裁判: http://www.beansoftware.com/ASP.NET-Tutorials/Modify-Web.Config-Run-Time.aspx

        2
  •  0
  •   Tommy    15 年前

    不太确定为什么要在运行时不断地更改web.config(不推荐),但请查看此处以了解更多信息。

    Writing to .NET Web.config

    这里的主要内容是web.config需要对运行aspnet进程的帐户具有读写权限。

        3
  •  0
  •   Capricorn    9 年前

    ConnectionStrings部分是只读的。 我只需要在会话期间更改,例如使用只读帐户的数据库查询,以及使用授权帐户验证后更新/修改操作。

    所以我的解决方案是AppSettings部分的ConnectionString,它可以在运行时修改。

    在web.config中: <appSettings> <add key="dbconnectionstr" value="Database=...;Host=...;Password=...;Username=..."/> </appSettings>

    在sqldatasource: <asp:SqlDataSource ID="datasource1" runat="server" ConnectionString="<%$ AppSettings:dbconnectionstr %>" .... </asp:SqlDataSource>

    在代码处: WebConfigurationManager.AppSettings["dbconnectionstr"] = newonnectionString;

        4
  •  -1
  •   Nick    15 年前

    我猜您看到的是编译器错误,而不是运行时错误。您使用的类是从应用程序设置中生成的方法,生成的属性只有一个getter属性,没有setter属性。这就是你收到错误的原因。

    要更改属性,需要使用配置类,并使用AppSettings属性,传入键的字符串。然后可以调用configuration.save方法。

        5
  •  -1
  •   Bharath K    15 年前

    不建议在运行时使用web.config更改连接字符串。
    我建议在不同的文件中维护这些连接,并实现一个文件监视程序来验证这些参数的值是否已经更改。