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