2011-09-22 22 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

如果運行應用程序的多個實例,設置似乎會損壞。 這似乎是一個計時問題,但一個相對簡單的重現方法是讓應用程序自行啓動然後退出,並嘗試在退出時保存設置。