在 ASP.NET 中启用 Debug.Assert






3.06/5 (9投票s)
2003 年 1 月 3 日

80815

1133
像在 Windows Forms 中一样,在 ASP.NET 中启用 Debug.Assert
引言
类 System.Diagnostics.Debug
提供一系列 Debug
方法,例如 Debug.Assert
、Debug.Fail
。它们仅在 Windows.Form
应用程序下工作。在 ASP.NET 下,不会显示弹出窗口来提醒用户调试版本捕获了潜在的逻辑错误!
使用代码
编辑 ASP.NET 项目的根 web.config 文件
<configuration>
<system.diagnostics>
<assert assertuienabled="false" logfilename="c:\Debug.log" />
<trace autoflush="true" indentsize="0">
<listeners>
<add type="AspNetDebugListener.DebugListener,AspNetDebugListener" />
</listeners>
</trace>
</system.diagnostics>
</configuration>
工作原理
TraceListener
类为监视跟踪和调试输出的侦听器提供抽象基类。因此,派生一个新类来监视调试输出。
public class DebugListener : TraceListener
{
public DebugListener() : this("Forks Asp.Net DebugTracer")
{
}
过滤输出字符串
DebugListener
使用 Environment.StackTrace
打印堆栈跟踪。但它会打印出许多无用的 Debug.Assert
... 调用帧,我使用过滤器来删除它
string GetStatckTraceString()
{
string s = Environment.StackTrace;
StringBuilder sb = new StringBuilder(s.Length);
using (StringReader reader = new StringReader(s))
{
bool debugFound = false;
for(;;)
{
string line = reader.ReadLine();
if (line == null)
break;
if (line.IndexOf("System.Diagnostics.Debug.Assert") != -1)
{
debugFound = true;
continue;
}
if (debugFound)
{
sb.Append(line);
sb.Append(Environment.NewLine);
}
}
}
return sb.ToString();
}