user.config 损坏问题

Posted

技术标签:

【中文标题】user.config 损坏问题【英文标题】:user.config corruption issue 【发布时间】:2012-03-05 13:57:21 【问题描述】:

在我们的桌面应用程序项目中,我们使用设置变量来存储应用程序的用户设置。此外,对于每个最新版本的应用程序,我们都会升级这些变量以保留用户设置。

通常,这可以正常工作,但最近我的一位最终用户报告了一个错误,即Configuration System failed to initialize。该错误与user.config 文件有关。因此,我们要求用户将他的文件发送给我们。

收到文件夹后,我们注意到其中包含 3 个文件(c3begfjb.newcfgc3begfjb.tmpuser.config)。 c3begfjb.tmp 是一个空文件,而 c3begfjb.newcfguser.config 是相同的文件。我们尝试打开这些文件,但 user.config 中的数据不是正确的 xml,而是其无法读取的格式文件。

你们有没有遇到过此类问题或任何想法如何以及可能是什么创建了这些文件并损坏了user.config 文件。

【问题讨论】:

磁盘坏了,没什么异常。告诉你的用户修理他的机器。 @Maverick - 我感觉到你的痛苦。我有一个经常遇到这个问题的应用程序。通常用户告诉我它发生在重启期间,可能是 Windows 更新自动重启。这似乎也是 ***.com/questions/868653/corruption-of-user-config 的副本 【参考方案1】:
                try
                
                    // preloads the settings file and throws an error if the settings file is corrupted
                    Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal);
                
                catch (ConfigurationErrorsException ex)
                
                   File.Delete(ex.Filename);
                

【讨论】:

如果检测到损坏的设置文件,请删除该文件。上面的代码 sn-p 就是这样做的。 这实际上会在 user.config 文件实际损坏之外的情况下引发异常。例如,如果应用程序的另一个实例已经对 user.config 进行了文件锁定,即使 user.config 没有损坏,也会引发 ConfigurationErrorsException。在继续删除之前,您应该检查内部异常(本例中为 IOException)。【参考方案2】:

这篇文章可能会有所帮助。

https://www.codeproject.com/Articles/30216/Handling-Corrupt-user-config-Settings

基本上这个过程是检查配置是否没有损坏,如果没有,它会重置配置。

【讨论】:

以上是关于user.config 损坏问题的主要内容,如果未能解决你的问题,请参考以下文章

加载 .NET WinForm 应用程序 user.config 文件时如何捕获异常?

Oracle 数据块损坏与恢复具体解释

指针函数参数损坏,堆栈损坏?

教你分辨硬盘属于硬损坏还是软损坏

excel 词典(xllex.ddl)文件丢失或损坏

调试堆栈损坏