1

我想在 ServiceStack 中注册一个自定义异常处理程序。https://github.com/ServiceStack/ServiceStack/wiki/Error-Handling上的 wiki说:

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/的Response成员Service受到保护,我无法从异常处理程序中访问请求。

如何访问请求?特别是,我需要访问Content-Type在请求中作为标头发送的接受语言列表。

4

1 回答 1

1

从源码看,request应该是 request dto,但如果你需要更多,你可以创建自己的ServiceRunner<T>,然后你会得到IRequestContextass,它有一个ContentType属性。

https://github.com/ServiceStack/ServiceStack/wiki/Error-Handling#fine-grain-error-handling-using-the-new-apis-servicerunner

编辑,更多信息:

当您覆盖时HandleException,您可以返回一个HttpError,这将允许您设置诸如标题和 aResponseStatus等内容。

于 2013-05-09T19:56:39.000 回答