我用下面的方法在我的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