【发布时间】:2013-05-06 17:00:43
【问题描述】:
我正在为 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();
【问题讨论】:
标签: servicestack