C# 更改wpf应用程序中的连接字符串

C# 更改wpf应用程序中的连接字符串,c#,wpf,connection-string,C#,Wpf,Connection String,我试图更改连接字符串,但这只是内存中的更改,而不是App.Config文件中的更改,下面是我正在使用的代码 System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); config.ConnectionStrings.ConnectionStrings[1].ConnectionString = "metadata=res:/

我试图更改连接字符串,但这只是内存中的更改,而不是App.Config文件中的更改,下面是我正在使用的代码

System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.ConnectionStrings.ConnectionStrings[1].ConnectionString = "metadata=res://*/TCSModel.csdl|res://*/TCSModel.ssdl|res://*/TCSModel.msl;provider=System.Data.SqlClient;provider connection string='Data Source=" + cmbServerName.Text + ";Initial Catalog=" + cmbDatabase.Text + ";User ID=" + txtUserName.Text.Trim() + ";Password=" + txtPassword.Password + ";Persist Security Info=True;MultipleActiveResultSets=True'";
config.ConnectionStrings.ConnectionStrings[1].Name = "TCSEntities";
config.ConnectionStrings.ConnectionStrings[1].ProviderName = "System.Data.EntityClient";
config.Save(ConfigurationSaveMode.Full, true);
ConfigurationManager.RefreshSection("connectionStrings");

上面的代码中缺少什么或有什么错误?

是否在Visual Studio中运行应用程序?如果是这种情况,Visual Studio将在
bin
目录中创建一个临时配置文件
yourApp.vshost.exe.Config
。此文件由您的代码更新。当然,在下一次启动期间,它会被重新创建(再次从源代码目录中的
app.config
复制),因此看起来保存不起作用


因此,这是一个“在生产中”不会发生的问题。

如果您可以发布app.config文件,这将非常有用。输入时包含多少连接字符串?此代码更改或设置列表中的第二个

尝试此操作以查看发生的情况-清除列表并仅使用单个条目设置一个新列表:

config.ConnectionStrings.ConnectionStrings.Clear();
config.ConnectionStrings.ConnectionStrings[0].ConnectionString = "metadata=res://*/TCSModel.csdl|res://*/TCSModel.ssdl|res://*/TCSModel.msl;provider=System.Data.SqlClient;provider connection string='Data Source=" + cmbServerName.Text + ";Initial Catalog=" + cmbDatabase.Text + ";User ID=" + txtUserName.Text.Trim() + ";Password=" + txtPassword.Password + ";Persist Security Info=True;MultipleActiveResultSets=True'";
config.ConnectionStrings.ConnectionStrings[0].Name = "TCSEntities";
config.ConnectionStrings.ConnectionStrings[0].ProviderName = "System.Data.EntityClient";
您还可以尝试使用
SaveAs
,以确保知道修订版的输出位置