手机版

调试ASP.NET应用程序的方法和技巧

时间:2021-11-28 来源:互联网 编辑:宝哥软件园 浏览:

以前使用ASP开发过Web应用程序的人一定知道调试Web应用程序有多麻烦。在ASP中,调试是痛苦的,通常涉及使用响应。Write()方法输出变量值。所以问问自己:在部署应用程序之前,你有多少次忘记删除调试语句?随着的出现。NET框架组件,这种情况已经完全改变了。英寸NET中,您可以使用VisualStudio.NET中的调试器来跟踪整个Web应用程序的执行,或者使用系统中的Trace类。Web.TraceContext命名空间。本文演示了如何使用Trace类来辅助调试工作。使用跟踪类ASP.NET包含一个跟踪类来帮助跟踪应用程序信息流。您现在可以使用Trace类打印调试信息,而不是使用Response对象进行调试。为了演示它的使用,我们首先建立一个ASP。并在默认的网络表单1上放置一个按钮和一个列表框控件(如图1所示)。用三个项目填充列表框控件,并将其“自动回写”属性设置为“真”。

图1。填写默认的WebForm1对于本文,我想跟踪应用程序的执行流程。首先,激活Trace。页面指令需要跟踪属性,其值设置为True(切换到查看HTML源模式),如图2所示。

图2。激活跟踪接下来,我在窗体的加载事件中插入一个跟踪语句,这样我就知道是否发生了回发。回发事件是ASP.NET最令人困惑的特性之一,这通常会导致不熟悉ASP.NET的开发人员失败。私有子页面_加载(由发送者作为系统调用。对象,_ byval e作为系统。eventargs) _处理mybase。“load”在这里放用户代码trace.write ('page loaded ')如果不是ostback,则放trace.write('不在回发中')用于初始化页面。执行一些操作。发生“回发”时写入(“,回发中”)。执行一些操作。我还想知道在选择ListBox数据项时是否发生回发:private sublistbox 1 _ selectedindexchanged(by val sender as _ system . object,_ byval e as system。eventargs) handles _ listbox1。selectedindex changedtrace。write(' listboxback ')end sub执行上述ASP.NET应用程序时,将显示以下输出(如图3所示):

图3。根据跟踪信息,可以发现第一次加载WebForm1时,可以看到字符串“Page loaded”和“Not in a back”。如果您点击WebForm1上的按钮,您可以看到如图4所示的记录。同样,如果单击列表框,也将显示字符串“列表框回发”。

图4。检查跟踪信息。跟踪页面包含以下部分(并非所有信息都在图3中显示):段描述请求详细信息描述与请求相关的信息,例如会话ID、请求的代码和时间。跟踪信息包含当前运行的应用程序的详细信息。跟踪信息显示在此部分。该树显示页面中控件的信息以及视图状态中隐藏字段的大小。Cookie集合显示页面的Cookie及其值设置。Header显示HTTP头信息,如内容长度和用户代理。表单集合显示页面上控件的名称及其值。服务器变量显示服务器端的环境变量。请注意,我们的跟踪信息显示在“跟踪信息部分”下。要关闭跟踪,只需将页面指令中的Trace属性设置为False。不需要删除应用程序中的跟踪指令。现在关闭调试就像设置布尔值一样简单。打开/关闭跟踪只是修改页面指令中跟踪属性的值。您也可以使用跟踪类来编程关闭跟踪。跟踪类的成员如下:属性描述IsEnabled指示是否为当前请求激活跟踪。跟踪模式设置跟踪模式:排序依据类别或排序依据时间。方法Warn以红色显示跟踪信息。写入跟踪信息。若要以编程方式关闭跟踪,可以在WebForm1的load事件中使用以下语句:Trace。IsEnabled=false。在我们的示例中,跟踪信息没有明显显示,因此被其他跟踪信息所掩盖。Trace类的Warn()方法可以用红色打印跟踪信息。因此,与其这样编写代码:Trace。写('页面加载'),它是:跟踪。警告(“页面已加载”)。图5显示了Warn()方法以红色显示的调试信息。

图5。使用Warn()方法以红色显示跟踪信息并对跟踪信息进行排序。将多个跟踪语句放在一个应用程序中有时看起来很麻烦。如果你的跟踪信息可以分为不同的类别,跟踪起来会更容易。Trace类允许我们根据类别对跟踪信息进行分类和排序。下面的示例演示如何按类别对跟踪信息进行分组:private子页_ load (byval sender作为system.object,_ byval e作为system。eventargs) _处理mybase。loadtrace。tracemode=tracemode。“按类别排序”这里是用户代码Trace。初始化页面时发出警告(“页面加载”)。页面已加载)如果不是postback,则“执行一些操作跟踪. warn(‘page _ load’,‘不在回发中’)否则跟踪. warn(‘page _ load’,‘在回发中’)End IfEnd SubPrivate Sub listbox 1 _ SelectedIndexChanged(by val sender _ As System。对象,Byeas _ system。eventargs) handles _ listbox1。selectedindex changedtrace。warn ('listbox ',' listbox回传')end sub执行此示例时,将显示以下调试信息,按类别分组(如图6所示):

图6。按类别排序我们来分析一下上面的代码:trace . trace mode=trace mode . sort by category属性设置跟踪支持的模式:按类别排序:根据类型对跟踪信息进行排序。按时间排序:按照执行顺序显示跟踪信息。因为我们选择了按类别排序模式,所以图7显示了信息是按类别排序的。Trace.warn ('page _ load ',' page loaded ')warn属性以红色显示消息。请注意,这是一个重载方法。在这个例子中,我们给它传递了两个参数。第一个输入类别,第二个参数是获取消息。除了使用Trace类设置跟踪模式,还可以使用page命令指定跟踪模式:% @ page language=' VB ' Trace=' true ' Trace mode='按类别排序' autoeventreup=' false ' code behind=' web form 1 . aspx . VB ' inherits=' web appli。1.web form 1“%应用程序跟踪”最后一部分讨论页面跟踪,它跟踪页面内执行的信息流。同时,ASP.NET支持应用程序级跟踪,这是在web.config文件的跟踪部分下面设置的:为了激活应用程序级跟踪,请设置以下值:属性值descriptionenabledtrue来激活或禁用应用程序级跟踪。RequestLimit10设置跟踪请求的最大数量。Page false在页面末尾显示跟踪信息。跟踪模式排序时间跟踪信息排序模式。LocalOnly True设置在非本地计算机上查看跟踪浏览器的能力。加载应用程序时,跟踪信息不会显示在页面上。要查看跟踪信息,我们需要使用跟踪查看器(trace.axd):

图7。应用程序级跟踪图7显示了应用程序最后六个请求的跟踪信息。要查看每个请求的详细信息,请单击每行中的“查看详细信息”链接。请注意,如果trace在web.config文件中设置为true,在page指令中设置为false,则跟踪将被禁止。总结ASP.NET使调试网络应用程序变得更加容易。既然你知道如何使用跟踪,那就试试看,看看它对你的效率有多大的提高!

版权声明:调试ASP.NET应用程序的方法和技巧是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。