在我们的应用程序中,我们有一组相当简单的日志记录钩子(MVC 和 API 控制器上的 IExceptionFilters 和 Application_Error() 中的一个额外的 catch-all),但是有一整类错误不会触发任何一个。如果从 WebAPI 本身或内部使用的某些东西(例如由依赖解析器创建的类的类型初始化程序)抛出异常,我得到的只是一个 500 响应被发送到客户端。
我发现捕获错误详细信息的唯一方法是使用 HttpConfiguration.IncludeErrorDetailPolicy 来配置应用程序以发出错误详细信息 - 但是,将错误详细信息广播到世界是一种明显的不良做法,所以我宁愿转这完全关闭,或将其设置为有条件的(例如,仅限本地。)..但这意味着远程进入运行应用程序的服务器并使用可以检查响应的工具(如 IE 或 Google)在本地调用 API Chrome),以便弄清楚发生了什么。
我在这里看到了另一个类似的问题(这里),但是提出的解决方案(使用 DelegatingHandler 来检查响应)不能满足我们的需求,我们认为。真的没有我可以挂钩的事件、我可以使用的扩展点或类似的东西来捕获发生的实际异常吗?
(顺便说一句,我想我可以将我的 IncludeErrorDetailPolicy 更改为 Always 并使用另一个线程中提供的解决方案来捕获 MessageHandler 中的错误详细信息,记录它们,并从发送到客户端的响应中手动清除它们,但是将是一个讨厌的黑客。)
想法?:/