CS客户端 App.Config更新问题
appconfig更新必须要重启才可以 这个方法为热更新不用重新启动
public void ModifyConfig(string serverName, string dbName, string userName, string password, params string[] ConfigFileNameList) { for (int i = 0; i < ConfigFileNameList.Length; i++) { string ConfigFilePath = Path.Combine(SetUpPath, ConfigFileNameList[i]); System.IO.FileInfo FileInfo = new System.IO.FileInfo(ConfigFilePath); if (!FileInfo.Exists) //不存在web.config文件 { throw new Exception("没有找到文统配置文件!"); } try { bool isModified = false; //记录该连接串是否已经存在 //如果要更改的连接串已经存在 if (ConfigurationManager.ConnectionStrings["ConnStr"]!= null) { isModified = true; } //新建一个连接字符串实例 ConnectionStringSettings mySettings = new ConnectionStringSettings("ConnStr",GetConnectionString(serverName, dbName, userName, password), "System.Data.SqlClient"); // 打开可执行的配置文件*.exe.config Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); // 如果连接串已存在,首先删除它 if (isModified) { config.ConnectionStrings.ConnectionStrings.Remove("ConnStr"); } // 将新的连接串添加到配置文件中. config.ConnectionStrings.ConnectionStrings.Add(mySettings); // 保存对配置文件所作的更改 config.Save(ConfigurationSaveMode.Modified); // 强制重新载入配置文件的ConnectionStrings配置节 ConfigurationManager.RefreshSection("connectionStrings"); //string ConfigContent = System.IO.File.ReadAllText(FileInfo.FullName); //ConfigContent = ConfigContent.Replace("{ConnStr}", GetConnectionString(serverName, dbName, userName, password)); //string dateCode = DesEncryption.Encrypt(DateTime.Now.AddMonths(1).ToShortDateString()); //ConfigContent = ConfigContent.Replace("{RegisterCode}", dateCode); //System.IO.File.WriteAllText(FileInfo.FullName, ConfigContent); } catch(Exception ex) { throw new Exception("修改web.config配置文件失败!"); } } }