我的问题DefaultTraceListener
(这是唯一的跟踪侦听器,如果在 app.config 中没有被覆盖)是,如果AssertUiEnabled
是false
(即在 ASP.NET 中)它会OutputDebugString
在失败的断言(调用)时写入一条消息Trace.Assert(false)
,但会继续执行。
所以我正在使用以下子类TraceListener
,它会引发异常。我使用激活它
TraceListenerWhichThrowsExceptionOnFail.InsertAsFirstTraceListener(Trace.Listeners);
在Application_Init
.
现在,Application_Error
如果我可以使用完整的堆栈跟踪记录异常(作为任何异常),包括对Trace.Assert(false)
.
public class TraceListenerWhichThrowsExceptionOnFail : TraceListener
{
public static void InsertAsFirstTraceListener(TraceListenerCollection traceListeners)
{
traceListeners.Insert(0, new TraceListenerWhichThrowsExceptionOnFail());
}
public override void Fail(string message, string detailMessage)
{
message = string.IsNullOrEmpty(detailMessage) ? message : message + ", Detail message: " + detailMessage;
throw new ApplicationException("Trace assertion failed" +
(string.IsNullOrEmpty(message) ? "" : ": " + message) + ".");
}
public override void Write(string message)
{
// NOP
}
public override void WriteLine(string message)
{
// NOP
}
}
现在我的问题是:有人认为这种方法有问题吗?