2012-02-14 75 views
1

在我們的桌面應用程序的項目,我們使用設置變量來存儲用戶設置的應用程序。而且,對於每個最新版本的應用程序,我們都會升級這些變量以保留用戶設置。user.config腐敗問題

通常情況下,這工作得很好,但最近我的最終用戶的一個報告錯誤,即Configuration System failed to initialize。該錯誤與user.config文件有關。因此我們要求用戶將他的文件發送給我們。

收到文件夾後,我們注意到它包含3個文件(c3begfjb.newcfg,c3begfjb.tmpuser.config)。 c3begfjb.tmp是一個空文件,而c3begfjb.newcfguser.config是相同的文件。我們試圖打開這些文件,但user.config中的數據不是正確的xml,而是其不可讀的格式化文件。

做任何你們經歷過這種問題,或者如何以及什麼可以創建這些文件,並損壞user.config文件中的任何想法。

+1

盤走壞,沒有什麼不尋常。告訴你的用戶修理他的機器。 – 2012-02-14 07:23:37

+0

@Maverick - 我感到你的痛苦。我有一個經常遇到這個問題的應用程序。通常用戶告訴我,它在重啓過程中發生,可能是Windows更新自動重啓。這也似乎是http://stackoverflow.com/questions/868653/corruption-of-user-config的重複 – harlam357 2012-03-23 03:38:40

回答

0
   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); 
       } 
+0

如果檢測到損壞的設置文件刪除該文件。上面的代碼片段就是這樣做的。 – TrustyCoder 2014-10-03 16:45:43

+0

這實際上會在user.config文件實際上已損壞的情況下拋出異常。例如,如果應用程序的另一個實例已在user.config上具有文件鎖定,則即使user.config未損壞,也會拋出ConfigurationErrorsException。在繼續刪除之前,您應該檢查內部異常(本例中爲IOException)。 – OfficeAddinDev 2016-09-27 23:02:43