通过 ServiceStack UncaughtExceptionHandler 传递错误
Pass error through ServiceStack UncaughtExceptionHandler
我想在不干扰响应的情况下将错误日志记录添加到我的 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 而不是空白屏幕,但这显然不是默认行为,并且还会写入事件日志,这在我的情况下是多余的。
如果 httpRes
在刚刚发布的最新 v4.0.40 of 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 而不是空白屏幕,但这显然不是默认行为,并且还会写入事件日志,这在我的情况下是多余的。
如果 httpRes
在刚刚发布的最新 v4.0.40 of ServiceStack 中没有关闭,现在应该会使用默认行为。