如何在使用Flex和Silverlight構建RIA應用程序時捕獲客戶端發生的錯誤?常用的做法是什麼?我已經看到一些異步的js調用實現的Web服務,但想知道社區如何處理它。你做客戶端日誌?
你做客戶端日誌?
回答
首先,我使用客戶端記錄所有的時間。 我處理它的方式取決於整個應用程序。
如果我使用AMF網關,那麼有一個應用程序錯誤的調用,每發生一個錯誤,通知服務器,在服務器端BugZilla中打開一個錯誤(這是我們使用的,你可以使用任何你想要的其他鉤子)。
如果我使用基於Web服務的應用程序,那麼會出現一個Web服務調用來解決客戶端錯誤。
有人會說你不應該對每一個錯誤都採樣服務器,我不同意這個評論,因爲在客戶端的錯誤是罕見的,它發佈到客戶端之前,徹底的QA,所以我想立即知道客戶遇到的每一個錯誤。
我喜歡從客戶端錯誤中創建JIRA問題的想法。 – 2010-08-15 22:00:48
當然,這樣客戶不必報告錯誤,在最壞的情況下,如果他打電話說他有這個錯誤,你可以說「我們已經在上面了」。 這是很棒的客戶服務 – KensoDev 2010-08-16 10:16:02
在Silverlight中,我喜歡使用WebClient在某處登錄到Web服務 - 您可以直接在Silverlight應用程序中執行此操作,而無需調用JavaScript。
要捕獲代碼不在堆棧上時觸發的異常,可以使用Application.UnhandledException事件。
我已經使用了與Avi Tzurel相同的方法 - 您需要在服務器端知道Flex客戶端中出現錯誤的時間。如果你想收集更多的數據(所有的日誌消息,警告),我會使用一個內部緩衝區,我會異步刷新它。
無論如何,你需要考慮,如果你的客戶可以用這種方法..可能需要他們的協議,然後將錯誤消息發送到服務器。
我基本上滲透所有的錯誤到頂部,並捕獲它們在未處理的異常。我向用戶顯示一條友好的消息。但是,在我的應用程序中,我實現了一個ILogger接口。這個接口可以用各種級別初始化並處理任何消息。您可以對其進行設置,以便用戶可以添加一個init參數來確定是否將錯誤傳輸到服務,並且如果連接了調試器,我通常會使用Debug.WriteLine寫入消息,以使其非常容易在調試模式下跟蹤問題。
在Silverlight中,您可能需要考慮Silverlight Integration Pack for Enterprise Library中的日誌記錄和異常處理應用程序塊。
- 1. 客戶端日誌
- 2. 客戶端日誌記錄
- 3. gemfirexd客戶端日誌不記錄
- 4. Linux - 系統日誌客戶端
- 5. 客戶端日誌記錄策略
- 6. msi日誌:關於客戶端狀態
- 7. 客戶端Postgres日誌記錄
- 8. 日誌客戶端IP地址
- 9. Atlasboard客戶端日誌記錄
- 10. MobileFirst客戶端日誌寫日誌的自定義位置
- 11. Socket.io日誌(客戶端不握手客戶端應該重新連接)
- 12. 客戶端Javascript崩潰的服務器端日誌記錄
- 13. AngularJS:客戶端錯誤的服務器端日誌記錄
- 14. 在angular2中捕獲服務器端的客戶端日誌
- 15. GWT:如何將客戶端日誌寫入GWT中的日誌文件
- 16. SNTP客戶端/日期
- 17. 廚師客戶端的Windows日誌記錄不工作
- 18. GWT日誌:發送服務器輸出到客戶端
- 19. 將日誌文件流式傳輸到遠程客戶端
- 20. apache soap soap客戶端常見日誌記錄jar衝突
- 21. 問題與客戶端的日誌採集
- 22. 如何禁用socket.io中的客戶端日誌記錄
- 23. Kubernetes拒絕來自本地kubectl客戶端的pod日誌
- 24. 將客戶端日誌添加到數組中
- 25. Oracle客戶端在Windows服務器上的日誌位置?
- 26. WCF日誌記錄:客戶端沒有得到響應
- 27. 禁用Apache HTTP客戶端的日誌記錄?
- 28. 在SSH客戶端捕獲執行日誌?
- 29. GWT沒有RPC的客戶端日誌記錄
- 30. 使用Elmah進行客戶端錯誤日誌記錄
AFAIK Silverlight不允許在客戶端創建文件,除非通過打開的文件對話框 - 所以客戶端日誌記錄會非常棘手,除非這是通過回調服務器的調用來登錄到那裏有一個DB? – 2010-08-15 16:10:23