如何在重定向之前获取堆栈跟踪?

时间:2011-10-26 08:46:16

标签: c# asp.net visual-studio

我有一个相当复杂的页面模型。在我的一个页面上,我修复了一个错误。然后这个页面重定向到另一个页面,但我不知道这个重定向在页面模型中发生了什么?导航保存在数据库中,因此我无法在c#etc中搜索response.Reddirect ....

是否有可以设置断点的地方,以便在重定向发生之前停止应用程序,然后我可以查看堆栈跟踪以查看在生命周期中调用哪些方法?

2 个答案:

答案 0 :(得分:0)

您可以尝试以下方式:

using System;
using System.Linq;
using System.Diagnostics;

    public class Program
    {   
        [STAThread]
        static void Main(string[] args)
        {
            Test43545();
            Test1();
            Console.ReadLine();
        }

        public static void Test43545(){
            Test1();
        }
        public static void Test1()
        {
            StackTrace stackTrace = new StackTrace();    
            StackFrame[] stackFrames = stackTrace.GetFrames();

            // write call stack method names
            foreach (StackFrame stackFrame in stackFrames)
            {
                Console.WriteLine(stackFrame.GetMethod().Name);
            }
        }
    }

上面的内容将为您提供所调用函数的名称,直至调用Test1()。这将告诉您在重定向之前调用了哪些方法(希望如此:)

答案 1 :(得分:0)

您可以通过Code Stepping达到所需的效果。在您知道肯定会执行的页面的最后一行设置一个断点,然后按F11逐行浏览代码。