Asp.net mvc 4 使用嵌套异步方法调试异步MVC操作控制器

Asp.net mvc 4 使用嵌套异步方法调试异步MVC操作控制器,asp.net-mvc-4,asynchronous,async-await,Asp.net Mvc 4,Asynchronous,Async Await,我正在MVC4应用程序中调用一个异步方法。这个方法必须调用十几个嵌套的其他方法。我的问题是,如果这些嵌套方法中的任何一个中断,它会将错误传递给父方法。因为它们都是嵌套的,所以它只是不断地向上传递链,并返回HTTP上下文通用错误消息 因为我有这么多嵌套方法,所以我不知道如何找到有关错误的更多信息。即使是一条简单的断线也会非常有用 现在我正在尝试打破每一条线,看看哪一条跑在最后,然后它才会停止响应。仅此方法及其嵌套方法就有2000多行代码。可以看出,这是一种非常不有效的调试方法 如果能找到一种更好的

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

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

现在我正在尝试打破每一条线,看看哪一条跑在最后,然后它才会停止响应。仅此方法及其嵌套方法就有2000多行代码。可以看出,这是一种非常不有效的调试方法

如果能找到一种更好的方法来找出异步方法在嵌套方法中实际发生故障的位置,这将非常有帮助。我真的不想尝试我所有的方法

--编辑--


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

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


虽然这远不如VisualStudio中的正常异常破坏好,但它允许我轻松地在该行上放置断点以查看发生了什么。

不幸的是,异步“堆栈跟踪”在开箱即用的情况下工作得不太好


你可以自己追踪。或者您可以尝试安装my,它将异步“堆栈跟踪”添加到异常的
数据
属性中(注意:默认情况下不在ELMAH中记录)。但是,此软件包还没有准备好生产,因此我建议在部署之前卸载。

为什么不能在调试器下运行它?我认为,在未捕获的异常情况下,它应该会自动中断。在正常方法中,它会这样做。在异步方法中(即使您使用backgroundWorker),它不会在行中中断。