我想在ServiceStack中注册一个自定义异常处理程序。 https://github.com/ServiceStack/ServiceStack/wiki/Error-Handling的维基说:
this.ServiceExceptionHandler = (request, exception) => {
//log your exceptions here
...
//call default exception handler or prepare your own custom response
return DtoUtils.HandleException(this, request, exception);
};
但是在我的异常处理程序中,request
参数不是Request对象,而是抛出异常的Service
(至少我从调试器中可以看出)。将request
转换为IHttpRequest
会因InvalidCast异常而失败。由于Request
的{{1}} / Response
成员受到保护,因此我无法从异常处理程序中访问请求。
如何访问请求?特别是,我需要访问Service
以及在请求中作为标题发送的已接受语言列表。
答案 0 :(得分:1)
通过查看来源,看起来request
应该是请求dto,但如果您需要更多,则可以创建自己的ServiceRunner<T>
,然后您将获得{{} 1}},也有IRequestContext
属性。
编辑,更多信息:
当您覆盖ContentType
时,您可以返回HandleException
,这样您就可以设置标题和HttpError
等内容。