2013-04-12 47 views
0

我已經創建了許多用於各種MS系統(從CRM 2011到SharePoint)的Silverlight應用程序。錯誤記錄/在Silverlight中顯示無需開發人員SDK

應用程序不完美,我會第一個承認它,有時候會出錯。我所有的應用已經顯示出了什麼問題:

private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e) 
    { 
     (...) 
      UIDispatcher.Invoke(() => ARP.DynamicsCRM2011.Silverlight.GlobalHelper.Controls.MessageWindow.ShowMessage(e.ExceptionObject.Message)); 
     (...) 
    } 

然而,幾乎總是,最終用戶將沒有安裝Silverlight的SDK開發包,並且將隨後,只收到一般「調試資源字符串不可用」消息。

該消息通常會包含發生的異常的一些非常基本的形式,但這並不理想。我也知道我錯過了錯誤的正確堆棧跟蹤(這當然很容易修復)。

我正在考慮重寫異常處理代碼以顯示泛型「出錯了,請重試消息」,以及一個額外的「顯示日誌」按鈕,以顯示所有異常信息以及堆棧跟蹤。

但是,我的問題是......我應該如何處理那些缺少的資源字符串?如果出現問題,我希望獲得儘可能多的信息,但我不能要求我的用戶都安裝開發人員SDK。

在這種情況下最好的行動方案是什麼?

回答

1

我不知道這是否是您的選擇,但您可以將這些信息記錄在數據庫或本地文件中,以防萬一出錯。但是,如果這是您可以考慮的事情(例如:應用程序適用於您的公司,但不公開等),我不會公開發表意見

+0

我已經修改了我的代碼以允許保存異常(以及所有內部異常)到磁盤......這有點缺乏,因爲'Exception'不能輕易地序列化(例如,Xml序列化不能處理字典,'Exception'沒有正確標記爲'DataContractSerializer')。問題在於,異常的「消息」部分會引發無意義的「調試資源字符串不可用」消息,而不是任何有用的東西。 – Shaamaan

+0

您至少可以添加堆棧跟蹤,以便您瞭解發生錯誤的位置。 –

+0

也已經實現了(儘管有些不好,我需要在其中加入更多的工作......當調用(()=>(...))失敗時,我在堆棧跟蹤中幾乎找不到任何東西 – Shaamaan

相關問題