Hopes

Start Here..

 

学习笔记:asp.net中使用跟踪(trace) ASP.NET故障排除


 

学习笔记:asp.net中使用跟踪(trace)

学习笔记:asp.net中使用跟踪(trace)

主要内容:

什么是“跟踪”
为什么要使用跟踪?
开启页面内的跟踪
开启整个网站的跟踪
查看跟踪信息
开启跟踪后和asp.net ajax冲突怎么办

一、什么是“跟踪”(来自于MSDN)
跟踪是一种在应用程序运行时监视其执行情况的方式。当开发 .NET 应用程序时,可以在其中添加跟踪和调试检测功能,并且在开发应用程序时和部署应用程序后,都可以使用该检测功能。利用 Trace 和 Debug 类,可以将有关错误和应用程序执行的信息记录到日志、文本文件或其他设备中,以便在随后进行分析。

二、为什么要使用跟踪?
在asp的时代,如果需要了解程序在运行时的某些状态、变量的值,通常都是在页面上采用Response.Write来输出的方式。这么做的原因,绝大多数都是因为asp薄弱的运行、开发环境造成的。这这样的做的结果是,随意在页面上输出造成页面的混乱不说,程序中添加的Response.Write还非常不容易管理,一旦有什么遗漏的话,就会给客户造成不必要的误解。
而asp.net的跟踪功能,不仅可以在程序运行的各个阶段,跟踪程序的状态和变量的值,另外,它还有asp.net本身所支持的各项管理功能。它可以和Aspx页面一起显示,也可以通过专门的方式在另外的地方呈现。据我目前所知,它有以下优点:

1、既可以整个网站统一管理,也可以在单个页面启动。通过配置web.config,可以启用整个网站的跟踪,也可以在页面上采用。

2、不影响页面的布局和呈现。

3、全面反映cookies和session的状态,这是我第一次采用跟踪的一个原因。

4、完整的反应各个页面事件的过程和执行的时间。

三、开启页面内的跟踪

1、在<@page>中采用Trace="true"

2、在代码里添加“Trace.IsEnabled = true;”

3、添加自己的跟踪信息:
            Trace.Warn("abc");   //Warn 显示的是红色的信息
            Trace.Write("def");   //write显示的是普通颜色的信息
四、开启全站的跟踪

在web.config中添加
<system.web>
 <trace enabled="true" />
</system.web>

五、查看跟踪信息

1、如果开启了页面内的跟踪,那么跟踪信息可以直接在页面内容的下面显示出来。

2、如果开启了全站的跟踪,可以通过“http://网站名/”或者“http://网站名/站点名/” (vs 2005里面新建的网站,在调试的时候就是以后者的形式出现的) 后面跟上“trace.axd”来查看。例如:http://localhost:5508/trace.axd

3、开启全站跟踪并且显示在页面:

<system.web>
 <trace enabled="true" pageOutput="true" />
</system.web>


4、开启全站跟踪并且显示在“输出”窗口:

<system.web>
 <trace enabled="true" pageOutput="false" writeToDiagnosticsTrace="true"/>
</system.web>

<system.diagnostics>
 <trace>
  <listeners>
   <add name="consolse" type="System.Diagnostics.ConsoleTraceListener"/>
  </listeners>
 </trace>
</system.diagnostics>


六、开启跟踪后和asp.net ajax冲突怎么办

在使用UpdatePanel的页面上开启了页面跟踪或者开启了全站跟踪时,pageOutput="true"就会出现Sys.WebForms.PageRequestManagerParserErrorException异常。
原因是页面跟踪时有Response.Write。
解决办法是,不用页面跟踪或者全站跟踪时,pageOutput="false"。需要查看跟踪信息时,用trace.axd。

 

七、性能
网站开启了跟踪,那么肯定是要低性能的。
但是在页面添加一些自定义的跟踪信息,应该对性能的影响很微小了。


附录

1、如何:使用跟踪查看器查看 ASP.NET 跟踪信息

http://msdn.microsoft.com/zh-cn/vcsharp/wwh16c6c(VS.80).aspx

2、《Essential ASP.NET 2.0中文版 》7.11  ASP.NET 2.0中的跟踪

http://book.csdn.net/bookfiles/392/10039214519.shtml

3、UpdatePanel 出现了Sys.WebForms.PageRequestManagerParserErrorException异常

Microsoft JScript 运行时错误: Sys.WebForms.PageRequestManagerParserErrorException: 无法分析从服务器收到的消息。之所以出现此错误,常见的原因是: 在通过调用 Response.Write() 修改响应时,将启用响应筛选器、HttpModule 或服务器跟踪。详细信息: 分析附近的“XXX|XXX|XXX”时出错。


http://www.cnblogs.com/simplenl/archive/2008/08/12/1266120.html


文章中提到了出现异常的各种原因,其中之一就是开启了网页的trace


4、MSDN:《跟踪应用程序和在应用程序中插入检测点》《ASP.NET 跟踪概述》

ms-help://MS.MSDNQTR.v90.chs/dv_fxdebug/html/773b6fc4-9013-4322-b728-5dec7a72e743.htm

ms-help://MS.MSDNQTR.v90.chs/dv_vwdcon/html/1552561d-887c-4002-8770-f92662cdf416.htm#ReadingTraceInformation

 

流浪是注定的宿命;





















ASP.NET故障排除
• 没有找到程序、没有显示ASP.NET的结果
或浏览器试图下载文件
• 不能显示页面:HTTP错误403
• 找不到页面:HTTP错误404
• 脱机时Web页面无效
• 得到服务器错误的错误语句
• 其他问题

没有找到程序、没有显示ASP.NET的结果
或浏览器试图下载文件
• 如果试图将页面作为硬盘上的本地文件来浏览,
就会遇到这样的问题。在Windows Explorer中单
击文件时也会遇到此问题。原因是用户试图不以
通过Web服务器请求的方式访问ASP.NET页面。
• 解决方法:需要在URL中引用Web服务器。
• 如果在URL中引用也出现这个问题,一般情况下
是ASP.NET的安装问题,如重新安装IIS后没有再
安装ASP.NET。

不能显示页面:HTTP错误403
• 可能是用户没有权限来执行包含在
ASP.NET中的代码。
• 解决方法:需要修改IIS的相关设置。

找不到页面:HTTP错误404
• 可能是在浏览器中输入了拼写错误的URL。
• 解决方法:输入正确的URL。
提示:
• 也有可能是文件后缀名错误,如用NotePad
写的代码,错误保存为*.aspx.txt。

脱机时Web页面无效
• 可能是用户试图请求一个页面,但当前没
有与Internet的连接。
• 解决方法:单击“连接”按钮;或者调整浏览
器的“脱机”设置。

得到服务器错误的错误语句
• 可能是ASP.NET代码错误。
• 解决方法:修改错误代码。

Web访问失败
• IE选项中,选择代理时,没有把“对于本地
地址不使用代理服务器”选中

其他问题:
• 可能是IIS安装不正确。
杀手锏:
ASPNET_regiis

• 应用程序级调试模式
– Web.config
– <compilation debug=“true”/>
• 页面调试模式
– HTML页面中添加以下代码:
<%@ Page Language=“c#” Debug=“true”
%>
– VS.NET中Document的Debug属性设置为true

• .NET框架自己带的调试器
• DbgCLR.exe
• 位于:Program files\Mircosoft Visual
Studio .NET\FrameWorkSDK\GuiDebug

CLR调试器使用的4个步骤
• 打开要调试的文件
• 将调试器附加到ASP.NET进程中
• 设置断点
• 使用调试器工具来操纵应用程序

在远程计算机上调试ASP.NET
Web 应用程序
• 调试器在远程使用方法与在本地使用相同
• 远程调试的必需条件:
– 必需安装Visual Studio remote debugging 组件
– 用户必需是Debugger User 组或Administrator
– 必需具有运行ASP.NET计算机的管理员权限
– Use DCOM (not TCP/IP) for C/C++

2.4 ASP.NET调试启动故障
• 无法在Web 服务器中启动调试
• 您没有调试服务器的权限。
• 发送调试HTTP 请求时发生服务器端错误
• 没有对项目进行配置以接受调试。
• 未正确安装调试器。
• 服务器不支持对ASP.NET 或ATL 服务器应用程
序的调试。
• 访问被拒绝。检验您是否是管理员或某个组成员。
• 无法启动ASP.NET 或ATL 服务器调试。
• 访问被拒绝。

 

2.4 ASP.NET调试启动故障
无法在Web 服务器中启动调试
• 未将IIS 应用程序配置为使用“集成
Windows身份验证”。确保已选中“身份验证
方法”对话框中的“集成Windows身份验证”
复选框
• 检查IIS 的“保持HTTP连接” 选项。如果它
是关闭的,则可能需要将其打开,再尝试
调试。

2.4 ASP.NET调试启动故障
您没有调试服务器的权限。
• 原因1:确保已启用Integrated Windows
Authentication。可能的原因是仅为IIS 的
Directory 安全启用了Basic authentication。
• 原因2:如果您在使用Integrated Windows
Authentication,则需要确保您的用户帐户
能够完全控制IIS 的目录。

2.4 ASP.NET调试启动故障
发送调试HTTP 请求时发生服务器端错误
• Web 应用程序没有应用程序名。为此,请
使用IIS MMC 来检查Web 项目的属性,
确保Web 项目具有应用程序名。
• 如果使用的是NTFS 文件格式,则确保
“aspnet”具有“wwwroot”或虚拟目录文件夹
上的适当权限,才能访问和写入这些文件
夹。

2.4 ASP.NET调试启动故障
• 没有对项目进行配置以接受调试。
– 原因: 在项目属性中未启用Asp.net 调试
• 未正确安装调试器
– 未正确安装.NET Framework 应用程序。
• 服务器不支持对ASP.NET 或ATL 服务器
应用程序的调试。
– IIS和VS.NET安装顺序有错,用
ASPNET_Regiis 重新注册

2.4 ASP.NET调试启动故障
访问被拒绝。
• 检验您是否是管理员或某个组成员。您可
能不是该计算机上Debugger Users 组的成
员。将您的用户帐户添加到计算机上的
Debugger Users 组中即可解决此错误。
• 您可能是Debugger Users 组的成员,但是
您不具有调试aspnet 辅助进程的权限,因
为您不是aspnet 用户帐户或
Administrators 组的成员。将您的用户帐户
添加到机器上的Administrators 组即可解决
此问题。

2.4 ASP.NET调试启动故障
无法启动ASP.NET 或ATL 服务器调试。
• 原因1:您可能安装了IIS Lockdown 工具。如果
这样,则查找urlscan.ini 文件,并将DEBUG
(区分大小写)添加到[allowverbs] 部分中。
• 原因2:如果将域控制器用作服务器,并且项目
是使用机器名(非完整域名)创建的,则可能需
要将项目的URL 更改为完整域名。
• 原因3:如果将IIS 设置为使用专用IP(例如
Web site identification,可以在IIS MMC 的IIS
设置中找到这一选项),则可能看到这条错误消
息。原因4:web.config 文件的中的值太大。默
认单位是千字节而非字节,因此如果更改此数
字,使用了错误的单位,则可能导致调试问题。

试用Response跟踪
• 新建web应用程序
• 添加用户名称、密码文本框、登录按钮
• 为登录按钮添加事件
• 在事件中用Response.Write来跟踪值是否
正确

跟踪
• 便利的来展示应用程序ASP.NET Web的信

• 两种方式跟踪:
– Page-level 跟踪
• 在浏览器中输出
• 不影响页面性能
– Application-level 跟踪
• 许可一次察看多个请求
• 自动为程序中的所有页开启page-level

2.1 在页面级使用跟踪
• 在HTML页添加以下代码
<%@ Page Trace=“true” %>
• VS.NET中的设置
– Document的Trace属性设置为true

跟踪输出
• 请求内容:包含关于页面请求的信息
• 跟踪信息:显示实际的跟踪信息
• 控制树:显示页面使用的不同控件
• Cookies集合:显示页面中的所有
Cookie
• 标题集合:显示客户端传送到服务器端
的连同请求的各种HTTP标题
• 服务器变量:显示服务器变量集合的所
有成员

2.2 写到跟踪日志
• Trace.Write:
• Trace.Warn:红色显示
注:
• Trace对象对应的类为TraceContext
• Trace.IsEnabled属性可以得到跟踪的当前
状态

Application-Level 跟踪日志
• 为所有页开启page-level跟踪
• 收集统计状态信息及控件层次
• 开启跟踪需按以下方式修改Web.config文件:
<configuration>
<system.web>
<trace enabled="true"/>
</system.web>
</configuration>
• 轻松察看多个请求的响应细节

支持的属性
设置true | false, 指示跟踪是否仅对本地用户或所有用户
(default is true)
localOnly
设置SortByTime | SortByCategory, 指示显示排序方式
(default is SortByTime)
traceMode
requestLimit 跟踪请求在服务器端的存储数量(default is 10)
设置true | false, 用于标记跟踪信息是否在页面被显示,包
括在每个页面直接输出,或是通过trace.axd文件输出。
(默认为关闭)
pageOutput
enabled 设置true | false, 用于标记跟踪是否开启(默认为关闭)
Value Description

  评论这张
转发至微博
转发至微博
0  分享到:        
阅读(700)| 评论(1)| 转载 (0) |举报

历史上的今天

相关文章

最近读者

评论

  登录后你可以发表评论,请先登录。登录>>
2007-07-14 15:23

     你好 我是个网络菜鸟 

     我现在有一个系统安全补丁装不上

     提示是 :  SL44 tmp未找到调试器

                 注册的JIT调试器不可用.试图使用下列命令启动JIT调试器产生了错误代码0x2(2).请检查计算机设置.

                   cordbg.exe.!a  0xdlc

还有 我的系统是 XP的

 希望你可以帮我解决这个问题  谢谢

 

 

 

 

 

 

 

 

 

 

 

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
  

posted on 2012-12-18 15:48 ** 阅读(358) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
 

导航

统计

公告

你好!

常用链接

留言簿(2)

随笔档案

文章分类

文章档案

新闻档案

相册

收藏夹

C#学习

友情链接

搜索

最新评论

阅读排行榜

评论排行榜