我有一个由2个项目组成的Visual Studio 2010解决方案:
我的异常处理程序在Global.asax(Application_Error。)中设置。 当UI中发生异常时,一切都运行正常,我得到文件名,行号等。
核心中发生的异常情况并非如此。 为此,我得到了一个类似的堆栈跟踪:
{FillUserCount at offset 2376 in file:line:column <filename unknown>:0:0}
P.S。 Core Bin和Core.pdb存在于UI Bin文件夹中。 在Visual Studio中 - &gt;工具 - &gt;选项 - &gt;调试 - &gt;取消选中“仅启用我的代码”,并选中“启用源服务器支持”。
有没有办法获取堆栈框信息(文件名,类,方法,行号)以及我引用项目中出现的错误?
答案 0 :(得分:3)
实现这一目标的解决方案是创建一个新网站并重新引用Core项目。
仍然,Jon Skeet提到的先决条件保持不变:
这是我最后的工作代码。它可能会帮助其他人:
Exception ex = Server.GetLastError().GetBaseException();
StackTrace trace = new StackTrace(ex, true);
if (trace.FrameCount == 0)
return;
StackFrame stackFrame = trace.GetFrame(0);
string className, fileName, functionName, message;
int line = 0;
// if for some reason, filename is being retrieved as null
if (stackFrame.GetFileName() == null)
{
className = ex.TargetSite.ReflectedType.Name;
fileName = ex.TargetSite.ReflectedType.Name;
functionName = ex.TargetSite.Name;
message = ex.Message;
}
else
{
// Collect data where exception occured
string[] splitFile = stackFrame.GetFileName().Split('\\');
className = splitFile[splitFile.Length - 1];
fileName = stackFrame.GetFileName();
functionName = stackFrame.GetMethod().Name;
message = ex.Message;
line = stackFrame.GetFileLineNumber();
}
答案 1 :(得分:2)
你是如何引用Core的?如果你已经添加了对“Release”DLL的引用,那就可以解释它...如果你刚刚添加了对项目的引用,那么你正在使用“Debug”运行构建“配置那么它应该没问题。