如何在ServiceStack中完全禁用未捕获异常的响应体(ResponseStatus),但保留StatusCode

时间:2012-08-15 12:42:55

标签: c# servicestack

我拥有的信息和我想要实现的信息

我正在使用ServiceStack并根据我的需要运行它,但是我无法找到如何禁用未被捕获的异常的正文/内容。

我有ServiceStack处理所有路由。

如果我导航到未映射到ServiceStack的路由,我会得到一个404(完美)的StatusCode,以及“找不到请求处理程序的响应的正文中的内容:......”

如果我的代码抛出一个未捕获的异常,ServiceStack将返回一个相关的StatusCode,但它也会返回一个带有ErrorCode和Message填充的ResponseStatus。

我关闭了DebugMode,这会禁用StackTrace,但是我想完全静音异常响应的整个Body。

我尝试了什么

我尝试了以下的响应过滤器:

ResponseFilters.Add((req, res, dto)) =>
{
    if (dto is Exception) res.Close();
});
遗憾的是,它不起作用。

我想避免什么

try{
    return service.GetResponse();
} catch (Exception) {
    return new HttpResult(.....);
}

我的问题

如何为所有未捕获的异常禁用响应正文,但仍返回StatusCode?我希望在正文中返回null,并且StatusCodes保持完整。

我试图澄清我的问题,但如果我有点模糊,请问我问题。

1 个答案:

答案 0 :(得分:1)

您应该可以通过覆盖HandleException的{​​{1}}来覆盖默认的异常处理行为。

您可以在此处检查默认实施:https://github.com/ServiceStack/ServiceStack/blob/master/src/ServiceStack.ServiceInterface/ServiceBase.cs#L228