最近用戶反映一些電腦啟動程式就崩潰,還給演示了一個比較詭異的問題 “把軟體重新拷貝到另外一個目錄,就能正常運行"。還說過一段時間又不能運行需要在換個位置。 ’由於當時沒有設置全局異常,只能藉助系統操作日誌來分析, 系統日誌記錄不全,就說發生一個異常程式掛掉。 就簡單加上全局異常捕獲。 public ...
最近用戶反映一些電腦啟動程式就崩潰,還給演示了一個比較詭異的問題
“把軟體重新拷貝到另外一個目錄,就能正常運行"。還說過一段時間又不能運行需要在換個位置。
’由於當時沒有設置全局異常,只能藉助系統操作日誌來分析, 系統日誌記錄不全,就說發生一個異常程式掛掉。
就簡單加上全局異常捕獲。
public class ExceptionHelper { public static void InitException() { Application.Current.DispatcherUnhandledException += Application_DispatcherUnhandledException; AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; } private static void Application_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e) { LogManager.WriteException(e.Exception); e.Handled = true; } private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) { var exception = e.ExceptionObject as Exception; if (exception != null) { LogManager.WriteException(exception); } } }
加入日誌詳細信息後,看到提示 Configuration system failed to initialize錯誤信息。然後藉助搜索,找到一篇文章。
瞭解到原因兩種:
一、config 文件中 <configSections> 的位置順序有關或者內容格式錯誤。
二、包含了User作用域的配置項的時候,user.config文件損壞了。
結合自己的程式確實用道<configSections>這個節點,用來保存程式在屏幕的位置,該節點已經在最上面,檢測內容格式也是正常。
那就剩下第二種可能了,找位置:C:\Users\Administrator\AppData\Local\SuspendWpfApp,刪除裡面的文件即可。
Administrator:用戶名, SuspendWpfApp:軟體名。
為了徹底解決這個問題,不在使用 Properties.Settings.Default來保存信息,自己用文件來保存上次信息。
因為一旦userSettings出現問題,軟體中依賴appSettings節點的信息將都獲取不到。