手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网络编程>Asp.Net编程>列表

创建ASP.NET监视服务器进程

来源:互联网 作者:west263.com 时间:2008-02-22
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

ProcessRequest 的实现会存储当前上下文和编写者。然后,它通过呈现页面的起始 HTML 标签将新的 HTML 页面创建为输出。下一步,它将创建一个用于格式化输出的表格。最后,如果启用了处理程序,并且发出请求的客户端是合法的 IP 地址之一,则通过以下三种方法创建输出: CreateHeaderAddProcessesCreateFooter。这些方法将相应的值呈现在表格的单元格中。这些代码有很大一部分是重复的,为了简短起见,以下仅给出了 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 配置对象的属性

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

属性 数据类型 说明
Enabled Boolean 如果 ProcessViewer 可用,则为 true。这样便可以暂时关闭处理程序而无需将其从 web.config 文件中删除。
LocalOnly Boolean 如果只能从本地计算机查看 ProcessViewer 的输出,则为 true。这是最为安全的方案,防止其他人查看 Web 应用程序的进程历史记录。
RequestLimit Integer 该属性限定了显示项目数的最大值。ProcessModelInfo.GetHistory 最多返回 100 个项目。此属性用于在需要时减少此数量。
PermittedHosts String array 如果 LocalOnly 为 false,则任何计算机均可以访问 Process.axd handler 来查看应用程序的进程历史记录。这就可能会有安全风险。因此,可以分配允许访问处理程序的 IP 地址的列表。此属性可用于限制对管理员工作站的访问。
Google