我正在调试一个包含多个类的项目网站;虽然大多数代码都是用C#处理的,但基于HTML的页面中有几个if语句,它们使用会话来更新自己。
因此,例如,我按下一个按钮,基于HTML的页面调出一个Javascript函数,然后调用一个C#函数。
<input class='buttonbrowse' type="button" name="btnShiftDate" value="..." <%=(requestApplicationForm.Paycode==null ? " disabled=disabled" : "")%> onclick="javascript:SelectExcessHrs_time();" id="Button1" />
这个函数做了很多计算,并将所有变量和诸如此类的东西存储在类'paycodeform'中。
在代码的末尾,返回:
Session["SubsidyApplicationForm"] = paycodeform;
回到HTML页面,会发生这种情况:
<%if(requestApplicationForm.Excessdatepunch!=null) {%>
等等。基本上,嵌入在HTML页面中的内嵌C#代码(人们会称之为什么?)。很多代码。他们通过paycodeform进行某种过滤。
Excessdatepunch是一个数组,其中包含paycodeform传回会话时的值。不幸的是,在HTML代码的某处,Excessdatepunch数组被清除,并且重新提供了默认值 - 运行在长代码列表中令人沮丧,并且进一步使问题复杂化,这种错误不会经常发生。
与标题一样,我想询问是否有人监控这些在线C#代码。我知道在那里放置一个断点是行不通的,而在会话上放置一个监视并不能完全给我内部工作,例如Excessdatepunch数组中的值。
答案 0 :(得分:1)
您可以使用System.Diagnostics.Debugger.Break()
来破坏ASPX中的代码执行。您还可以写入跟踪和调试侦听器。尝试调试以下代码示例:
<form id="form1" runat="server">
<div>
This is some HTML. The current time is:
<%
System.Diagnostics.Debugger.Break();
Session["CurrentTime"] = DateTime.Now;
%>
</div>
<%
System.Diagnostics.Trace.WriteLine(Session["CurrentTime"]);
System.Diagnostics.Debug.WriteLine(Session["CurrentTime"]);
System.Diagnostics.Debugger.Break();
Response.Write(Session["CurrentTime"]);
Response.Write("<br/>");
%>
You should see the current date above this line.
</form>
如果您希望在页面中显示跟踪输出,请将Trace
属性添加到<%@ Page %>
标记:
<%@ Page Language="C#" Trace="true" ... %>
参考文献: