1.原因
在写入.config文件时,软件异常退出,或者电脑关机,会发生User.config文件损坏的问题
2.解决方法
(1)去除经常写入.config文件的程序,会降低发生概率;
(2)在OnStartup启动执行函数中,加入.config文件监测,如果可以正常打开,则做一下备份,如果文件出现了损坏,则使用备份的文件。
3.代码
/// <summary>
/// 监测配置文件是否损坏
/// </summary>
private void MonitorFileIsDamage()
{
string configPathBackup;
try
{
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal);
configPathBackup = config.FilePath + ".bak";
config.SaveAs(configPathBackup, ConfigurationSaveMode.Full, true);
}
catch (ConfigurationErrorsException ex)
{
string filename = ex.Filename;
configPathBackup = filename + ".bak";
//_logger.Error(ex,"Cannot open config file");
if (File.Exists(filename) == true)
{
Logger.err("Config file {0} content:{ 1} "+ filename, File.ReadAllText(filename));
File.Delete(filename);
if (!string.IsNullOrEmpty(configPathBackup) && File.Exists(configPathBackup))
{
File.Copy(configPathBackup, filename, true);
}
}
Needle_Manage_System.Properties.Settings.Default.Reload();
//软件重启
Process.Start(Application.ResourceAssembly.Location);
Application.Current.Shutdown();
//_logger.Error("Config file {0} does not exist", filename);
}
}
protected override void OnStartup(StartupEventArgs e)
{
//监测config文件
MonitorFileIsDamage();
}
4.其它
如有不足,请指正