ASP.NET调试与错误处理全解析
1. ASP.NET跟踪输出分析
在ASP.NET开发中,跟踪输出能为我们提供很多有用的信息。例如,在特定的跟踪输出里,我们可以观察到一些有趣的点。首先,请求类型为POST,而之前的示例大多使用GET方法。其次,跟踪信息部分的一系列操作与Global.asax文件中的事件有明显不同,但它们遵循我们在示例中可能已经察觉到的轨迹:页面初始化(Init);加载并解析提交的_VIEWSTATE数据(LoadViewState);处理用户提交的任何数据,将其与现有的_VIEWSTATE数据进行比较以确定是否有更改(ProcessPostData);然后触发控件事件(PostBackEvent)。
在这个例子中,由于点击了按钮,页面触发了btnTrace_Click事件,这使得Trace.Write语句得以执行,它们会显示在跟踪输出中,位于图9.13底部的几行位置。需要注意的是,我们不是通过trace.axd “文件”来查看Trace.Write语句生成的跟踪输出,而是直接将其放置在页面跟踪输出中。另外,通过将@ PageTrace属性设置为true,即使web.config文件的跟踪元素中的enabled属性为false,也能为页面生成跟踪输出。而且,添加Session和Application变量会使跟踪输出中增加Session State和Application State部分。
2. 防御性编程:避免错误的艺术
处理错误的最佳方法是消除它们,但在实际编程中,这并非总能实现。在某些情况下,错误是我们无法控制的,比如硬件故障、网络不稳定、文件丢失或移动、资源名称更改等。当我们在开发机器上工作时,程序运行在理想环境中,但当程序交付使