2011-09-22 112 views
8

我有一个用户给我的崩溃报告从调用Settings.Upgrade()我的user.config设置文件如何被破坏?

 
System.Configuration.ConfigurationErrorsException: Root element is missing. 

我让他给我他的user.config文件,该文件是全零。不知怎的,它已经腐败了。

我找到了一种通过在%localappdata%\ MyAppName目录中生根并删除所有用户配置文件并重新启动应用程序来从中恢复的方法。如果我让应用继续执行,则会进一步提供ConfigurationErrorsException s。

这种腐败可能是我做过的事情的结果吗?我有几千个用户的基础上有多个报告,但我没有直接搞乱那个文件。有没有其他人遇到这个user.config损坏?

回答

4

只是一个想法,我从这个article得到。

你可以检查你的.Net框架版本,如果是的话,你最近是否做了一些更新,可能改变了你正在使用的任何方法?

另一个虽然是这个article(这有点旧 - 2008),但它给出了一些关于如何处理损坏的配置文件的指针。

它也可能是由于应用程序无法处理当前用户速率而导致的内存问题吗?

希望它有帮助,因为它还没有发生在我身上,但仍然是一个有趣而令人迷惑的困境。

+0

我认为一切都只是在常规的.NET 4.至于第二篇文章,获取违规文件的确切路径是一个很好的技巧,用于单击损坏的文件而不是批量删除。我会改变我的处理,而不是使用它。 – RandomEngy

+1

我在几千个已安装的应用程序上遇到过4次相同的问题。这发生在电源故障期间。删除文件会使应用程序正常工作,但您将失去用户的设置。道德:不要使用微软的设置,或者更好的做法是改用webapps。 –

+1

后续工作:我现在正在使用SQLite存储设置,这对于这种损坏具有适应性。我没有像这样的问题。 – RandomEngy

1

如果运行应用程序的多个实例,设置似乎会损坏。 这似乎是一个计时问题,但一个相对简单的重现方法是让应用程序自行启动然后退出,并尝试在退出时保存设置。