通过ServiceStack UncaughtExceptionHandler传递错误

时间:2015-04-20 23:30:57

标签: c# error-handling servicestack

我想将错误记录添加到我的ServiceStack AppHost配置的UncaughtExceptionHandlers,同时不干扰响应。默认行为 - 不添加委托 - 是为了使ServiceStack呈现一个显示ErrorCode,Message和(在调试模式下)StackTrace的屏幕。但是,当我添加一个委托来执行一些日志记录时,该行为被覆盖,而我得到一个空白屏幕。

我知道我可以访问回复并可以写任何我想要的内容,但是我只是在我完成日志记录后退回到默认行为。这可能吗?

再现这很简单。只需在配置期间引发异常,例如在GlobalRequestFilters中。注释掉UncaughtExceptionHandlers以查看差异。

GlobalRequestFilters.Add((req, res, dto) =>
{
    throw new Exception("oops");
}

UncaughtExceptionHandlers.Add((req, res, operationName, ex) =>
{
    //anything that doesn't throw a new exception
}

我可以在委托中抛出异常以获取YSOD而不是空白屏幕,但这显然不是默认行为,并且也写入事件日志,在我的情况下这将是多余的。

1 个答案:

答案 0 :(得分:1)

如果在刚刚发布的最新v4.0.40 of ServiceStack中未关闭httpRes,则应立即使用默认行为。