Version 3.0
调试和部署 Web 应用程序
第十一章
2
回顾
? ASP.NET 提供了可以自定义 Web 站点的配置文件
– Machine.Config
– Web.Config
? 每个目录可以使用它们自己的 Web.Config 文件
? 在配置标记内,配置信息分为两个类别
– 配置节处理程序声明区
– 配置节设置区
3
? 跟踪 ASP.NET 应用程序
? 调试 ASP.NET 应用程序
? 解释数据缓存和输出缓存
? 将缓存部署到应用程序中
目标
4
跟踪概念
? 在开发 ASP.NET应用程序时,能够将调试打
印语句插入代码以实现
– 输出变量或结构
– 断言是否满足条件
– 通过应用程序的执行路径进行一般的跟踪
? ASP.NET提供两种类型的跟踪
– 页级跟踪
– 应用程序级跟踪
5
跟踪类别
6
页级别跟踪
<% @Page Trace="True"
TraceMode=,SortByCategory" %>
<html><body>
<h1>测试跟踪,..</h1>
</body></html>
请求信息
7
跟踪信息类别
类别 描述
请求详细信息 列出有关请求的所有信息
跟踪信息 列出标准和自定义跟踪语句的信息
控件树 列出页中的所有项
Cookie 集合 列出页中所有 cookie 及其值
标头集合 列出 HTTP 标头的所有项
窗体集合 列出所有窗体元素及其正在传递的值
服务器变量 列出所有服务器变量及其值
8
跟踪演示
步骤:
设置页面指令 Trace=“True”
在页面代码中插入跟踪代码
9
检查跟踪
检查是否已启用跟踪
实例代码
…
if(Trace.IsEnabled)
{
Trace.Warn(“在 Init 进程内部!, );
}
…
10
应用程序级别跟踪
<?xml version=”1.0” encoding=”utf-8”?>
<configuration>
<system.web>
<trace enabled=”true” pageOutput=”true” />
</system.web>
</configuration>
11
Trace 标记参数
参数 描述
requestLimit 设置要存储在服务器上的跟踪请求数 。 默认值为 10
traceMode 设置统计信息按时间还是按类别排列(取值为
sortByCategory 或 sortByTime)。 默认值为 sortByTime
pageOutput 设置跟踪信息是否要显示在每页底部。默认值为 False
Enabled 设置是否启用应用程序级别跟踪 。 默认值为 True
localOnly 设置跟踪是对本地主机用户还是对所有用户启用。默
认值为 True
12
为 ASP.NET应用程序启用调试模式
? 必须先配置 ASP.NET 运行库以使用符号信息
编译应用程序,然后才能调试该应用程序
? 符号(,pdb 文件)通知调试器
– 如何查找二进制文件的原始源文件
– 如何将代码中的断点映射到那些源文件中的行
? 启用此设置会明显影响应用程序的性能。
<configuration>
<compilation debug="true"/>
</configuration>
13
调试 ASP.NET应用程序演示
14
设置断点
? 若要在页中设置断点,请单击包含可执行语
句或函数 /方法签名的行的左边距
? 在设置断点的位置会出现一个红点
? 将鼠标移动到断点上,确保它恰当地映射到
了 Aspnet_wp.exe 进程中的正确应用程序实
例
15
使用 Visual Studio.NET调试 ASP.NET应
用程序演示
16
缓存概念
? 缓存将访问频率高的数据或构造成本高的数
据保留在内存中
? 在 Web 应用程序的上下文中,缓存用于在
HTTP 请求间保留页或数据,并在无需重新
创建的情况下重新使用它们
17
缓存分类
? 输出缓存
? 数据缓存
18
输出缓存概念
? 通过缓存从动态页生成的内容来提高请求 /
响应的吞吐量
? 默认情况下启用输出缓存,但不缓存来自任
何给定响应的输出
? 输出缓存遵循页的过期和有效性策略
19
输出缓存演示
<%@ OutputCache Duration="30" %>
<html>
<script language="C#" runat="server">
void Page_Load(Object Src,EventArgs E)
{
TimeGen.Text = DateTime.Now.ToString("G");
} </script> <body>
<h1>使用输出缓存 </h1>
<p><i>此页生成于,</i>
<asp:label id="TimeGen" runat="server"/>
</body></html>
Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
Response.Cache.SetSlidingExpiration(true);
使用下列方法设置缓存的持续时间
20
数据缓存概念
? 缓存提供了简单的词典接口,使程序员可以
轻松地将对象放到缓存中以及从缓存中检索
对象
? ASP.NET 缓存对于每个应用程序都是私有的,
并且将对象存储在内存中
? 缓存的生存期与应用程序的生存期相同
21
数据缓存演示
22
部署
? 部署 ASP.NET 应用程序非常简单。
? 应用程序的目录和文件需要从开发环境复制到该
应用程序将最终成形的产品环境中。
? XCOPY 可用于复制文件。
XCOPY <source> <destination> 其中 source
是源位置,destination 是目标位置
23
总结
? 定位代码错误的过程称为跟踪。
– 页级别跟踪
– 应用程序级别
?,NET 框架 SDK 包括一个非常适于调试的轻型调试
器
? 缓存的概念
? ASP.NET 支持两种类型的缓存
– 输出缓存
– 数据缓存
调试和部署 Web 应用程序
第十一章
2
回顾
? ASP.NET 提供了可以自定义 Web 站点的配置文件
– Machine.Config
– Web.Config
? 每个目录可以使用它们自己的 Web.Config 文件
? 在配置标记内,配置信息分为两个类别
– 配置节处理程序声明区
– 配置节设置区
3
? 跟踪 ASP.NET 应用程序
? 调试 ASP.NET 应用程序
? 解释数据缓存和输出缓存
? 将缓存部署到应用程序中
目标
4
跟踪概念
? 在开发 ASP.NET应用程序时,能够将调试打
印语句插入代码以实现
– 输出变量或结构
– 断言是否满足条件
– 通过应用程序的执行路径进行一般的跟踪
? ASP.NET提供两种类型的跟踪
– 页级跟踪
– 应用程序级跟踪
5
跟踪类别
6
页级别跟踪
<% @Page Trace="True"
TraceMode=,SortByCategory" %>
<html><body>
<h1>测试跟踪,..</h1>
</body></html>
请求信息
7
跟踪信息类别
类别 描述
请求详细信息 列出有关请求的所有信息
跟踪信息 列出标准和自定义跟踪语句的信息
控件树 列出页中的所有项
Cookie 集合 列出页中所有 cookie 及其值
标头集合 列出 HTTP 标头的所有项
窗体集合 列出所有窗体元素及其正在传递的值
服务器变量 列出所有服务器变量及其值
8
跟踪演示
步骤:
设置页面指令 Trace=“True”
在页面代码中插入跟踪代码
9
检查跟踪
检查是否已启用跟踪
实例代码
…
if(Trace.IsEnabled)
{
Trace.Warn(“在 Init 进程内部!, );
}
…
10
应用程序级别跟踪
<?xml version=”1.0” encoding=”utf-8”?>
<configuration>
<system.web>
<trace enabled=”true” pageOutput=”true” />
</system.web>
</configuration>
11
Trace 标记参数
参数 描述
requestLimit 设置要存储在服务器上的跟踪请求数 。 默认值为 10
traceMode 设置统计信息按时间还是按类别排列(取值为
sortByCategory 或 sortByTime)。 默认值为 sortByTime
pageOutput 设置跟踪信息是否要显示在每页底部。默认值为 False
Enabled 设置是否启用应用程序级别跟踪 。 默认值为 True
localOnly 设置跟踪是对本地主机用户还是对所有用户启用。默
认值为 True
12
为 ASP.NET应用程序启用调试模式
? 必须先配置 ASP.NET 运行库以使用符号信息
编译应用程序,然后才能调试该应用程序
? 符号(,pdb 文件)通知调试器
– 如何查找二进制文件的原始源文件
– 如何将代码中的断点映射到那些源文件中的行
? 启用此设置会明显影响应用程序的性能。
<configuration>
<compilation debug="true"/>
</configuration>
13
调试 ASP.NET应用程序演示
14
设置断点
? 若要在页中设置断点,请单击包含可执行语
句或函数 /方法签名的行的左边距
? 在设置断点的位置会出现一个红点
? 将鼠标移动到断点上,确保它恰当地映射到
了 Aspnet_wp.exe 进程中的正确应用程序实
例
15
使用 Visual Studio.NET调试 ASP.NET应
用程序演示
16
缓存概念
? 缓存将访问频率高的数据或构造成本高的数
据保留在内存中
? 在 Web 应用程序的上下文中,缓存用于在
HTTP 请求间保留页或数据,并在无需重新
创建的情况下重新使用它们
17
缓存分类
? 输出缓存
? 数据缓存
18
输出缓存概念
? 通过缓存从动态页生成的内容来提高请求 /
响应的吞吐量
? 默认情况下启用输出缓存,但不缓存来自任
何给定响应的输出
? 输出缓存遵循页的过期和有效性策略
19
输出缓存演示
<%@ OutputCache Duration="30" %>
<html>
<script language="C#" runat="server">
void Page_Load(Object Src,EventArgs E)
{
TimeGen.Text = DateTime.Now.ToString("G");
} </script> <body>
<h1>使用输出缓存 </h1>
<p><i>此页生成于,</i>
<asp:label id="TimeGen" runat="server"/>
</body></html>
Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
Response.Cache.SetSlidingExpiration(true);
使用下列方法设置缓存的持续时间
20
数据缓存概念
? 缓存提供了简单的词典接口,使程序员可以
轻松地将对象放到缓存中以及从缓存中检索
对象
? ASP.NET 缓存对于每个应用程序都是私有的,
并且将对象存储在内存中
? 缓存的生存期与应用程序的生存期相同
21
数据缓存演示
22
部署
? 部署 ASP.NET 应用程序非常简单。
? 应用程序的目录和文件需要从开发环境复制到该
应用程序将最终成形的产品环境中。
? XCOPY 可用于复制文件。
XCOPY <source> <destination> 其中 source
是源位置,destination 是目标位置
23
总结
? 定位代码错误的过程称为跟踪。
– 页级别跟踪
– 应用程序级别
?,NET 框架 SDK 包括一个非常适于调试的轻型调试
器
? 缓存的概念
? ASP.NET 支持两种类型的缓存
– 输出缓存
– 数据缓存