追踪ASP.NET代码里的bug

ZDNet软件频道 时间:2004-03-23 作者:Builder.com |  我要评论()
本文关键词:
Web开发中一个棘手的问题是调试。在ASP或者简单JavaScript的时代,开发人员会利用print语句来追踪代码里的问题。
本文译自Builder.com,未经许可请勿转载

Web开发中一个棘手的问题是调试。在ASP或者简单JavaScript的时代,开发人员会利用print语句来追踪代码里的问题。随着微软引入ASP.NET,这一方法发生了改变,因为它包含了大量的特性,可以利用TraceContext类更加轻松地调试Web页面。

选择追踪的范围

在ASP.NET应用程序里,你可以启动对单个页面或者整个Web应用程序进行追踪的能力。Web.config这个文件用来启动在应用程序这一级别进行的追踪。下面就用到了web.config文件里的追踪元素:

<trace enabled="false" requestLimit="10" pageOutput="false"
traceMode="SortByTime" localOnly="true" />

现在让我们更加仔细地看看其各个属性:

  • enabled:用来启动(真)和关闭(伪)应用程序这一级别的追踪。
  • requestLimit:用来描述保存在内存里的追踪数量。
  • pageOutput:用来指示追踪信息需要(真)还是不需要(伪)附加在每页之后。如果选择了伪,那么追踪信息可以在专门的追踪页面——trace.axd里查看。
  • traceMode:用来确定如何显示追踪信息。在缺省状态下,它被设置为按时间顺序显示,但是它也可以按类别(SortByCategory)显示。
  • localOnly:用来指示远程调试可用(伪)或者不可用(真)。

然而,如果应用程序里只有一个页面,那么你就会在追踪的时候碰到问题。在这种情况下,你可以在页面的命令里加上下面的追踪属性,启动对单个页面的追踪:

<%@ Page language="c#" trace="true" tracemode="SortByCategory"
Codebehind="WebForm1.aspx.cs" AutoEventWireup="false"
Inherits="WebApplication1.WebForm1" %>

要注意trace和tracemode属性会和它们在web.config文件里对应的属性发生冲突。如果你还不清楚哪个设置是优先的,那么我告诉你,页面设置会取代web.config的设置,所以你在追踪整个应用程序的时候要启动它,而在追踪所选页面的时候禁用它。是选择页面还是应用程序这一级别(或者是把两者结合起来)进行追踪要根据情况来决定。

处理输出

一旦决定了需要追踪的级别,你就要开始接收追踪的结果了。如果是正在追踪整个应用程序,那么你可以在trace.axd页面里查看所有的追踪结果(具体有多少要取决于你用requestLimit属性维持的数量)。同样的,对单个页面的追踪进行完之后,你可以查看单个页面的追踪。

追踪的输出结果分为五个部分:

  • 请求细节(Request Details):这一部分包括会话的ID、请求时间、编码、请求类型(get、post等等),以及状态码。
  • 追踪信息(Trace Information):用来显示请求的细节,这包括和ASP.NET页面相关的各种事件。
  • 控件树(Control Tree):用来显示页面内使用的控件;这包括其大小和保存在ViewState里的相关字节数。
  • Cookie集(Cookies Collection):页面所用的cookie的列表。
  • 标题集(Headers Collection):和请求相关的HTTP标题,包括主机(Host)、Cookie和用户代理(User-Agent)。
  • 服务器变量:和请求相关的服务器环境变量的完整列表。

百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134