servicestack 用のプラグインを作成しており、サービスに組み込まれているエラー処理を利用したいと考えています。アイデアは、ルートが処理される前にいくつかのロジックを実行し、403 エラーを返す可能性があるということです。これを行う方法は、 a を追加して、その内部からaRequestFilter
をスローすることだと考えました。UnauthorizedAccessException
ただし、これは機能せず、応答は空になります。通常はこれらを処理する try/catch が に適用されていないようRequestFilters
です。にはエラー応答を作成するメソッドがありますが、受信した にこれを適切に追加する方法がわかりDtoUtils
ません。HandleException()
IHttpResponse
RequestFilter
サービス内からできるように例外をスローできるルーティング前のロジックを追加する別の方法があるかどうか、またはRequestFilter
.
編集
プラグインによって返されるエラーが、サービスでスローされた例外によって返されるエラーと (できるだけ厳密に) 一致するようにします。
DtoUtils.HandleException
SS が応答を構築する方法のように見えますが、次のようにStackOverflowException
プラグインから呼び出そうとするとa がスローされます。
var error = new HttpError(HttpStatusCode.Forbidden, "UnauthorizedAccessException", message);
//_appHost is stored by the original Register() call
var result = DtoUtils.HandleException(_appHost, request, error);
response.WriteToResponse(request, result);
response.EndServiceStackRequest();