我拥有的信息和我想要实现的信息
我正在使用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保持完整。
我试图澄清我的问题,但如果我有点模糊,请问我问题。
答案 0 :(得分:1)
您应该可以通过覆盖HandleException
的{{1}}来覆盖默认的异常处理行为。
您可以在此处检查默认实施:https://github.com/ServiceStack/ServiceStack/blob/master/src/ServiceStack.ServiceInterface/ServiceBase.cs#L228。