从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; } }