WebMatrix 通过警报/打印让人回想起经典的调试日子。不理想,但它有一定的简单性和艺术性。但是,当您的代码出现问题时,有时很难了解您的变量等等。我已经用一个简单的Debug
类解决了我的大部分调试问题。
使用以下代码在 App_Code 目录中创建一个名为 Debug.cs 的文件:
using System;
using System.Collections.Generic;
using System.Web;
using System.Text;
public class TextWrittenEventArgs : EventArgs {
public string Text { get; private set; }
public TextWrittenEventArgs(string text) {
this.Text = text;
}
}
public class DebugMessages {
StringBuilder _debugBuffer = new StringBuilder();
public DebugMessages() {
Debug.OnWrite += delegate(object sender, TextWrittenEventArgs e) { _debugBuffer.Append(e.Text); };
}
public override string ToString() {
return _debugBuffer.ToString();
}
}
public static class Debug {
public delegate void OnWriteEventHandler(object sender, TextWrittenEventArgs e);
public static event OnWriteEventHandler OnWrite;
public static void Write(string text) {
TextWritten(text);
}
public static void WriteLine(string text) {
TextWritten(text + System.Environment.NewLine);
}
public static void Write(string text, params object[] args) {
text = (args != null ? String.Format(text, args) : text);
TextWritten(text);
}
public static void WriteLine(string text, params object[] args) {
text = (args != null ? String.Format(text, args) : text) + System.Environment.NewLine;
TextWritten(text);
}
private static void TextWritten(string text) {
if (OnWrite != null) OnWrite(null, new TextWrittenEventArgs(text));
}
}
这将为您提供一个名为 Debug 的静态类,它具有典型的 WriteLine 方法。然后,在您的 CSHTML 页面中,您可以新建DebugMessages
对象。您可以通过.ToString()
它获取调试消息。
var debugMsg = new DebugMessages();
try {
// code that's failing, but calls Debug.WriteLine() with key debug info
}
catch (Exception ex) {
<p>@debugMsg.ToString()</p>
}