2011-01-14 94 views
7

到目前爲止,我使用ServiceStack的結果很好,除了處理錯誤看似棘手。如果在消息序列化過程中出現問題(因爲我忘記給消息添加一個默認構造函數),所有客戶端返回的消息是服務器有內部錯誤和狀態碼爲500的消息。將偵聽器添加到Global.asax中的HttpApplication.Error事件不起作用,因爲它從未受到影響。 Application_Error也沒有。這不僅是不足以最終用戶的情況下,它使調試這些錯誤很麻煩的唯一辦法,找出了什麼問題是在快速監視這個醜陋的表達式:ServiceStack:如何處理錯誤?

Encoding.Default.GetString(((System.IO.MemoryStream)((SyncMemoryStream)((System.Net.HttpWebResponse)(((WebException)ex).Response)).ResponseStream))._buffer) 

我想是抓服務器端的任何和所有錯誤(無論是通過ServiceStack進行序列化還是我的服務出現錯誤),並將所需的信息添加到我的所有消息類型都具有的Errors集合中。

+0

什麼是ServiceStack? – 2011-01-14 20:07:12

回答

11

有關ServiceStack中錯誤處理和驗證的更多詳細信息,請參閱ServiceStack的Validation and Error handling wiki頁面。

目前沒有辦法用自定義邏輯處理序列化異常(儘管我現在將其添加到TODO列表:)。

如果您的響應DTO具有ResponseStatus屬性(即從IHasResponseStatus繼承),則ServiceStack應自動序列化您的異常。

還可以通過AppHost.Configure()onload腳本將您的StackTrace設置爲DebugMode設置爲true並使用SetConfig()。