1 System.Diagnostics.StackTrace st = new System.Diagnostics.StackTrace(); 2 System.Diagnostics.StackFrame[] sfs = st.GetFrames(); 3 //過慮的方法名稱,以下方法將不會出現在返回的方法調用列表中 4 string _filterdName = "ResponseWrite,ResponseWriteError,"; 5 string _fullName = string.Empty, _methodName = string.Empty; 6 for (int i = 1; i < sfs.Length; ++i) 7 { 8 //非用戶代碼,系統方法及后面的都是系統調用,不獲取用戶代碼調用結束 9 if (System.Diagnostics.StackFrame.OFFSET_UNKNOWN == sfs[i].GetILOffset()) break; 10 _methodName = sfs[i].GetMethod().Name;//方法名稱 11 //sfs[i].GetFileLineNumber();//沒有PDB文件的情況下將始終返回0 12 if (_filterdName.Contains(_methodName)) continue; 13 _fullName = _methodName + "()->" + _fullName; 14 } 15 st = null; 16 sfs = null; 17 _filterdName = _methodName = null; 18 LogHelper.Logger.Debug("合約乘數為零-調用堆棧打印" + _fullName.TrimEnd('-', '>'));
