WebMatrix回到通過警報/打印進行調試的經典日子。不理想,但有一定的簡單性和藝術性。但是,當你的代碼出現問題時,有時很難得到你的變量以及什麼。我用一個簡單的Debug
類解決了大部分調試問題。
建立一個叫做Debug.cs文件放在App_Code目錄下面的代碼:
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));
}
}
這會給你一個名爲調試靜態類,它具有典型的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>
}
考慮到環境,似乎有點更好的答案。 – VoidKing 2013-06-14 20:21:06