获取当前程序运行的堆栈的副本集合

从DNN中拔出的,效果不赖。。。获取程序运行时候异常的调用堆栈位置

 /// <summary>         /// 获取调用的堆栈信息 获取当前程序运行的堆栈的副本集合         /// </summary>         private static StackFrame CallingFrame         {             get             {                 StackFrame frame = null;                 ///返回当前堆栈跟踪中所有堆栈帧的副本。                 var stack = new StackTrace().GetFrames();                 int frameDepth = 0;                 if (stack != null)                 {                     ///穷历  直到找到要调用日志或者异常的时候 的前一个方法    就查询到了 出错的执行方法的位置                     var reflectedType = stack[frameDepth].GetMethod().ReflectedType;                     while (reflectedType == BuildManager.GetType("DotNetNuke.Services.Exceptions.Exceptions", false)                             || reflectedType == typeof(DnnLogger)                             || reflectedType == typeof(DnnLog))                     {                         //排除这些类 找到指定的调用的类 Type                         frameDepth++;                         reflectedType = stack[frameDepth].GetMethod().ReflectedType;                     }                     frame = stack[frameDepth];                 }                 return frame;             }         }
posted @ 2015-01-16 12:09  特洛伊-Micro  阅读(462)  评论(0编辑  收藏  举报