我用下面的方法在我的ASP.NET Web應用程序接收堆棧跟蹤異常返回預期的信息:堆棧跟蹤/的StackFrame不要在生產環境中
public static void getStackTraceInfo(System.Diagnostics.StackTrace trace)
{
for (int i = 0; i < trace.FrameCount; i++)
{
int nLine = trace.GetFrame(i).GetFileLineNumber();
int nCol = trace.GetFrame(i).GetFileColumnNumber();
string methodName = trace.GetFrame(i).GetMethod().Name;
}
}
try
{
}
catch(Exception ex)
{
getStackTraceInfo(new System.Diagnostics.StackTrace(ex, true));
}
它給我全系列/列/方法名稱信息,如果我在Visual Studio 2010開發環境中運行它,但是在IIS上的生產環境中,它將返回所有0,並將方法名稱作爲空字符串。
我是否需要做任何特殊的事情來使它在IIS上工作?
我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 – 2013-03-12 17:45:11
這是正確的。除非應用程序在調試模式下編譯並且相關的.pdb文件放置在生產中的bin目錄中,否則不會獲得具有完整調試信息(包括行號)的堆棧跟蹤。不是推薦的做法。 – 2013-03-12 17:47:28
如果你的代碼在「build」中的「release」模式下,我想你不會得到行號。 – dekdev 2013-03-12 17:48:15