ServiceStack:エラーを処理する方法は?
-
11-10-2019 - |
質問
エラーに対処するのはトリッキーなように見えることを除いて、これまでのところ素晴らしい結果でServiceStackを使用しています。メッセージのシリアル化中に何か問題が発生した場合(たとえば、メッセージにデフォルトのコンストラクターを追加するのを忘れたため)、すべてのクライアントが戻ってきます。サーバーには内部エラーがあり、ステータスコードが500のメッセージです。 HttpApplication.Error
Global.Asaxでのイベントは、ヒットしないため機能しません。どちらもそうではありません Application_Error
. 。これはエンドユーザーシナリオには不十分であるだけでなく、これらのエラーをデバッグして、何が間違っていたのかを知る唯一の方法として非常に面倒になります。
Encoding.Default.GetString( ((System.IO.MemoryStream)((SyncMemoryStream)((System.Net.HttpWebResponse)(((WebException)ex).Response)).ResponseStream))._buffer)
私が望んでいるのは、サーバー側のすべてのエラーをキャッチすることです(ServiceStackによるシリアル化、または私のサービスのエラーなど)。 Errors
私のすべてのメッセージタイプが持っているコレクション。
解決
ServiceStackを参照してください 検証とエラー処理 WikiページServiceStackのエラー処理と検証の詳細については。
現時点では、カスタムロジックを使用してシリアル化例外を処理する方法はありません(ただし、TODOリストに追加します:)。
あなたの応答dtoがaを持っている場合 restonsestatus プロパティ(IEまたはIHASRESPONSESTATUSから継承)、ServiceStackは例外を自動的にシリアル化する必要があります。
また、Stacktraceセットをシリアル化するためにも取得します デバッグモード apphost.configure()onloadスクリプトでsetconfig()を使用してtrueに。