gpt4 book ai didi

c# - User.config 损坏

转载 作者:太空狗 更新时间:2023-10-29 23:29:01 26 4
gpt4 key购买 nike

所以我做了很多研究试图解决这个问题,但似乎无法 1) 重现问题,但更重要的是 2) 找到一个最新的解决方案来修复它。

在 2 周内,user.config 文件随机损坏(例如,XML 文件中会丢失 block )已经发生过两次,从而导致应用程序在下次启动时崩溃。

悬崖笔记:

  1. 我需要一个最新的解决方案来以编程方式处理这个问题(即它是来自 CodeProject Handling Of Corrupted User Config 的帖子还是其他帖子

  2. 我还需要一个可重现的案例来“破坏”user.config 文件(除了删除其中的 block ,因为它对我不起作用)以便能够测试上面的 #1。

我遇到的解决方案:

  1. 我知道您可以手动导航到疯狂路径 (.../AppData/..././1.0.0.0/user.config) 并将其删除并重新运行应用程序,但是,这对我们来说不是一个合适的解决方案。我们需要能够以编程方式捕获此错误,并相应地进行处理。如果可能,最好不要重新启动应用程序。

  2. 我找到了一些帖子/答案,它们与本文的版本略有不同 CodeProject Handling Of Corrupted User Config他们使用与该链接相同的机制,或使用 ConfigurationManager 命令打开配置文件并捕获异常。

我尝试过的:

  1. 我的一个问题是我似乎无法访问 C# 4.5.2 中的 ConfigurationManager 类。但是 MSDN 文档说它在当前框架中可用。所以我真的不能尝试

  2. 当我尝试手动“破坏”我的 user.config 文件以测试我的解决方案时,它没有给我任何问题,而且应用程序工作正常...这令人担忧,因为我找不到可重现的测试给定解决方案是否有效的案例(即上面链接中提供的不使用 ConfigurationManager 的解决方案)

如有任何帮助,我们将不胜感激!

最佳答案

要手动损坏您的文件,只需删除其中的所有文本并保存文件。

为了访问ConfigurationManager 类,您必须添加对System.Configuration 的DLL 引用。如果您需要帮助添加引用,这些是列出的步骤 online :

  1. 在解决方案资源管理器中,右键单击项目节点并单击“添加引用”。
  2. 在“添加引用”对话框中,选择指示您要引用的组件类型的选项卡。
  3. 选择要引用的组件,然后单击“确定”。

要解决损坏问题,您可以使用如下所示的 try/catch block :

try {
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal);
}
catch (ConfigurationErrorsException exception) {
Console.WriteLine("Settings are Corrupt!!");
// handle error or tell user
// to manually delete the file, you can do the following:
File.Delete(exception.Filename); // this can throw an exception too, so be wary!
}

编辑:作为进一步说明,请注意,如果您在任何地方调用 Settings.Upgrade() 并且您的“旧”文件已损坏,这也会使软件崩溃。确保还用 try/catch block 包围您的 Settings.Upgrade() 调用。

关于c# - User.config 损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42708868/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com