【问题标题】:How to completely disable response body (ResponseStatus) for uncaught exceptions in ServiceStack, but keep StatusCode如何完全禁用ServiceStack中未捕获异常的响应主体(ResponseStatus),但保留StatusCode
【发布时间】:2012-08-15 12:42:55
【问题描述】:

关于我拥有什么以及我正在努力实现什么的信息

我正在使用 ServiceStack 并启动并运行它以满足我的需要,但是我无法找出如何禁用未捕获异常的正文/内容。

我让 ServiceStack 处理所有路由。

如果我导航到未映射到 ServiceStack 的路由,我会得到 404(完美)的状态代码和“未找到请求的处理程序:...”的响应正文中的内容。

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

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

我的尝试

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

ResponseFilters.Add((req, res, dto)) =>
{
    if (dto is Exception) res.Close();
});

不幸的是,它没有工作。

我想避免的事情

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

我的问题

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

我已尝试将我的问题说清楚,但如果我有任何含糊不清的地方,请向我提问。

【问题讨论】:

    标签: c# servicestack


    【解决方案1】:

    您应该能够通过覆盖HandleExceptionServiceBase 来覆盖默认的异常处理行为。

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

    【讨论】:

      猜你喜欢
      • 2012-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-04
      • 1970-01-01
      • 1970-01-01
      • 2014-08-13
      相关资源
      最近更新 更多