0

我在 MVC4 应用程序中调用 ASYNC 方法。该方法必须调用十几个嵌套的其他方法。我的问题是,如果这些嵌套方法中的任何一个中断,它会将错误传递给父方法。由于它们都是嵌套的,它只是不断地向上传递返回到 HTTP 上下文的通用错误消息。

由于我有这么多嵌套方法,我不知道如何找到有关错误的更多信息。即使是一条简单的断线也会非常有帮助。

现在我正在诉诸于打破每一行,看看哪一条在它停止响应之前跑到最后。仅此方法及其嵌套方法就有超过 2000 行代码。如您所知,这是一种非常无效的调试方式。

在嵌套方法中,任何有助于找出 ASYNC 方法实际中断位置的更好方法都将非常有帮助。我真的很想避免对我拥有的每种方法都进行 Try/Catch。

- 编辑 -

这已经回答了。根据 StackOverflow 的限制,我将我的解决方案放在下面,并将在两天内将其标记为已回答。

4

2 回答 2

0

显然,如果我在我的 Action Method 中的第一个调用上放置一个 Try/Catch,它至少会给我堆栈跟踪中的行。注意到这一点后,我添加了 ELMAH 并在引发一般异常时检查了我的错误日志。看来这条线也被传回了 ELMAH。

虽然这不像 Visual Studio 中的正常异常中断那么好,但它允许我轻松地在该确切行上放置一个断点以查看发生了什么。

于 2013-10-21T19:38:35.667 回答
0

不幸的是,开箱即用的异步“堆栈跟踪”不能很好地工作。

您可以使用我在这篇博文中描述的技术进行自己的跟踪。或者您可以尝试安装我的async诊断包,它将异步“堆栈跟踪”添加到异常的Data属性中(注意:ELMAH 中默认不记录)。但是,这个包还没有准备好生产,所以我建议在部署之前卸载。

于 2013-10-31T00:51:22.050 回答