我正在为servicestack编写一个插件,我想利用内置于服务的error handling。这个想法是我想在处理路由之前执行一些逻辑,并且可能返回403错误。我认为这样做的方式是添加一个RequestFilter
并从其中投掷一个UnauthorizedAccessException
。自定义插件的错误处理
虽然这不起作用,并且响应最终是空的。它看起来像通常处理这些的try/catch不适用于RequestFilters
。 DtoUtils
有一个HandleException()
方法创建一个错误响应,但我不知道如何正确地将其添加到RequestFilter
收到的IHttpResponse
。
我想知道是否有另一种方法来添加预路由逻辑,您可以从内部服务中引发异常,或者是否有建议的方式来创建来自RequestFilter
的错误响应。通过在服务中抛出的异常返回
编辑
我想通过插件返回匹配错误(尽可能地)的错误。
DtoUtils.HandleException
看起来像SS构建所述响应的方式,但它抛出一个StackOverflowException
当我尝试从插件这样称呼它:
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();
我试过这个,但是响应与来自服务的正常异常响应非常不同。从jQuery调用时很容易看到这一点,当你这样做时'jqXHR.responseText'是空的。对于正常的ServiceStack异常,responseText包含序列化错误。 – Tyrsius 2013-05-06 17:49:51