我正在调试一个包含多个类的项目网站;虽然大部分代码是用 C# 处理的,但在基于 HTML 的页面中有几个 if 语句,它使用 session 来更新自身。
例如,我按下一个按钮,基于 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# 代码(人们会这样调用它们吗?)。很多代码。他们通过支付代码表进行某种过滤。
Excessdatepunch 是一个数组,其中包含 paycodeform 传回 session 时的值。不幸的是,在 HTML 代码的某处,Excessdatepunch 数组被清除,并重新提供默认值 - 遍历长长的代码列表令人沮丧,而且使事情进一步复杂化的是,此错误并不经常发生。
正如标题一样,我想问一下是否有某种方式可以监控这些内联 C# 代码。我知道在那里放置一个断点是行不通的,而在 session 上放置一个 watch 并不能完全给我内部工作原理,例如 Excessdatepunch 数组中的值。
最佳答案
您可以使用 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" ... %>
引用资料:
关于c# - 是否可以在 aspx 网页本身中跟踪/观察 session 的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17463505/