如何在C#页面中编写调试信息
本文关键字:调试 信息 | 更新日期: 2023-09-27 18:00:58
注意:之所以出现此问题,是因为页面的呈现事件被覆盖,这反过来又导致原本可见的.net错误显示改为显示垃圾,并且没有看到类中的编码错误。
我想把调试信息放在C#网页上。我制作了一个包含数组的静态类,并在代码的各个位置添加调试消息。该类有一个get方法,返回一个将所有数组元素连接在一起的字符串。在页面底部,我有:
<身体><--debug=<%=debugging.get((%>--><html>这总是把页面搞砸。整个页面显示垃圾。如果我使用文本常量,如以下内容,它可以正常工作:
<身体><--debug=<%="xxx"%>--><html>我想这可能是unicode问题或其他什么问题。我尝试过转换,但无法使其发挥作用。类别为:
using System;
public static class debugging {
public static String[] messages;
public static void add(String v) {
Array.Resize(ref messages, messages.Length + 1);
messages[messages.Length - 1] = v;
}
public static String get() {
String s = "";
for (int i = 0; i < messages.Length; i++) s += messages[i] + "'r'n";
return s;
}
}
我怎样才能让它发挥作用?
您的类有缺陷,这可能就是您所说的得到垃圾的原因。您的message
参数按原样抛出异常。这是一个工作类。
public static class debugging
{
public static String[] messages = null;
public static void add(String v)
{
if (messages == null)
messages = new string[1];
else
Array.Resize(ref messages, messages.Length + 1);
messages[messages.Length - 1] = v;
}
public static String get()
{
if (messages == null)
return string.Empty;
String s = "";
for (int i = 0; i < messages.Length; i++) s += messages[i] + "'r'n";
return s;
}
}
这是该类的改进版本
public static class debugging
{
public static List<string> cMsg = new List<string>();
public static void add(String v)
{
cMsg.Add(v);
}
public static String get()
{
StringBuilder sbOnMe = new StringBuilder();
foreach (var One in cMsg)
sbOnMe.AppendLine(One);
return sbOnMe.ToString();
}
}
也许将输出放在PRE标记上,而不是HMTL注释上?
</body>
<pre style="display:none;">debug=<%=HtmlUtility.HtmlEncode(Eval(debugging.get())) %></pre>
</html>
也许会这样。
返回的文本可能会干扰html或注释标记。
也许你可以试试之类的东西
<div style="display:none;"><%=debugging.get()%></div>
编辑:
你也可以尝试HTMLEncode,这可能会奏效。
<%=HttpUtility.HtmlEncode(debugging.get())%>