是否可以在运行时更改app.config中的ConnectionString值?根据{{3}},它应该可以作为ConnectionString属性“获取或设置连接字符串。”
我的代码如下所示:
ConnectionStringSettings mainConnection = ConfigurationManager.ConnectionStrings["mainConnection"];
mainConnection.ConnectionString = "Data Source=SERVER;Initial Catalog=" + NewDatabaseName + ";Integrated Security=True";
我收到的错误是:“Unhandled Exception:System.Configuration.ConfigurationErrorsException:配置是只读的。”
答案 0 :(得分:17)
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
答案 1 :(得分:0)
不确定为什么要在运行时不断更改web.config(不推荐),但请查看此处了解更多信息。
这里最重要的是你的web.config需要为ASPNET进程运行的帐户拥有读写权限。
答案 2 :(得分:0)
connectionStrings-Section是只读的。
我只需要在会话期间进行更改,例如具有只读帐户的数据库查询,以及在使用授权帐户进行验证更新/修改操作之后
所以我的解决方案是appSettings-Section的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;
答案 3 :(得分:-1)
我猜你所看到的是编译器错误,而不是运行时错误。您正在使用的类是应用程序设置中生成的方法,生成的属性仅在属性上具有getter,而没有setter。这就是你收到错误的原因。
要更改属性,您需要使用Configuration类,并使用AppSettings属性,传入键的字符串。然后你可以调用Configuration.Save方法。
答案 4 :(得分:-1)
不建议在运行时使用web.config更改连接字符串 我建议将这些连接保存在不同的文件中并实现filewatcher以验证这些参数的值是否已更改。