ProcessRequest 的实现会存储当前上下文和编写者。然后,它通过呈现页面的起始 HTML 标签将新的 HTML 页面创建为输出。下一步,它将创建一个用于格式化输出的表格。最后,如果启用了处理程序,并且发出请求的客户端是合法的 IP 地址之一,则通过以下三种方法创建输出: CreateHeader、AddProcesses 和 CreateFooter。这些方法将相应的值呈现在表格的单元格中。这些代码有很大一部分是重复的,为了简短起见,以下仅给出了 AddProcesses 及其相关的方法。
Private Sub AddProcesses(ByVal table As _
System.Web.UI.WebControls.Table)
Dim procs As ProcessInfo() = _
ProcessModelInfo.GetHistory(_config.RequestLimit)
Dim row As TableRow
_list = New ProcessInfoCollection
For Each proc As ProcessInfo In procs
row = AddRow(table)
_list.Add(proc)
AddCell(row, proc.ProcessID.ToString())
AddCell(row, proc.Status.ToString())
AddCell(row, proc.StartTime.ToString("g"))
AddCell(row, FormatAge(proc.Age))
AddCell(row, proc.PeakMemoryUsed.ToString("N0") " MB")
AddCell(row, proc.RequestCount.ToString("N0"))
AddCell(row, proc.ShutdownReason.ToString())
Next
End Sub
Private Function AddCell( _
ByVal row As System.Web.UI.WebControls.TableRow, _
ByVal text As String) As System.Web.UI.WebControls.TableCell
Dim c As New TableCell()
c.Text = text
row.Cells.Add©
Return c
End Function
细心的(和有技术背景的)读者可能已经注意到,我完全可以通过呈现 DataGrid 并将 ProcessInfoCollection 绑定到 DataGrid 来简化此代码,但那样就失去了编写程序的乐趣。
安装 HTTP 处理程序
创建完 HTTP 处理程序后,必须进行安装才能使用。这包括使类可用,并在配置文件中添加相应的信息以激活处理程序。
如果创建的是仅被单个 vroot 使用的简单处理程序,则可以将 DLL 复制至该 vroot 的 bin 目录即可使用该类。如果创建了一个由多个 vroot 使用的 HTTP 处理程序(类似于 ProcessHandler),则此处理程序必须安装到全局程序集缓存 (GAC) 中。要将此处理程序安装到 GAC 中,类必须具有严格名称。要具有严格名称,它必须有关联的严格名称键。必须使用命令行可执行文件 sn.exe 创建严格名称键文件。有关此程序的详细信息,请参阅 NET Framework Tools 文档的 Strong Name Tool (Sn.exe) 一节。
处理程序可用后,下一步就是添加配置以使其可以处理请求,方法是在 Web.Config 或 machine.config 文件的 httpHandlers 节中添加条目。此条目指定了将通过处理程序路由的文件扩展名和操作。进程查看处理程序的条目如下所示。
<add verb="*" path="process.axd"
type="Microsoft.Samples.Msdn.Web.ProcessHandler,
MsdnProcessHandler, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=f5f94c20bb90ce64" />
此条目意味着在某个请求使用任何 HTTP 命令寻找“文件” process.axd(实际上不存在)时,它将向位于程序集 MsdnProcessHandler 中的 Microsoft.Samples.Msdn.Web.ProcessHandler 类发送请求。该类将实现 IHttpHandler,然后由 IHttpHandler 负责生成输出。
添加配置
许多 ASP.NET 应用程序使用 appSetting 标签添加自定义配置。这对于大多数应用程序来说已经完全足够了。然而,有时应用程序可以使用更有针对性的解决方案。这种情况下,您可以为应用程序新建节。
新建配置节包括两个步骤。首先,必须创建配置对象。此对象或结构具有表示所需配置数据的属性。此对象可以具有、但通常不具有任何方法。其次要创建一个节处理程序。此节处理程序负责从 web.congfig 文件中读取相应的信息,并且将其转化为配置对象。
ProcessViewer 的配置对象具有四个属性,如下表所述。
表 4:ProcessViewer 配置对象的属性



