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

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

来源:互联网 作者:west263.com 时间:2008-02-22
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
IdleTimeout 进程重新启动的原因是缺少客户端。如果在 Web.Config 文件的 processModel 节中的 idleTimeout 值所设置的时间期限内没有客户端请求,将发生此类重新启动。这通常也是可以接受的重新启动的原因。 RequestsLimit 进程重新启动的原因是接收到的请求数量超过了在 Web.Config 文件的 processModel 节中设置的值 (requestLimit)。一般来说,这种重新启动的原因也可以接受,主要用于您希望进程偶尔重新启动的情况。 MemoryLimitExceeded 进程重新启动的原因是因为超出了通过 Web.Config 文件中的 memoryLimit 值设置的内存限制。这通常表示进程的某个 ASP.NET 应用程序部分发生了问题(可能是内存泄漏)。如果此类现象频繁发生,请监视每个 Web 应用程序的内存使用是否正常。 RequestQueueLimit 进程重新启动的原因是在等候响应的请求总数超出了 Web.Config 文件的 requestQueueLimit 值。通常这是某些情况将导致 Web 服务器延迟的信号。可能需要增加内存或服务器,或提高驱动器或处理器的速度。 DeadlockSuspected 进程重新启动的原因是可能停止了正在处理的请求。正如这个关闭原因的名称那样,最可能导致这种情况的原因为:如果两个或多个线程需要另一个线程完成后才能继续进行(例如 A 线程需要 B 线程完成向某文件的写入后才能继续进行,而同时 B 线程需要 A 线程完成计算后才能继续进行),我们将这种情况称为线程处于“Deadlock”(死锁)状态。如果有这种可能,进程将因此而关闭。一般来说,您肯定不希望看到这种关闭原因,如果您不幸看到了,请查看在应用程序中使用的所有线程处理或资源使用情况。 PingFailed 当 ASP.NET 辅助进程管理页面时,有时会收到从 IIS 进程发来的 ping 以确定是否仍需要此进程。如果 ping 失败,则 IIS 进程可能会关闭该 ASP.NET 进程。这个关闭原因说明了可能在服务器接收消息的过程中确实存在通信问题或 ASP.NET 辅助进程因某种原因而停止工作。 Unexpected 一般来说,您肯定不想看到此消息,因为它表明是“某种其他原因”终止了 ASP.NET 辅助进程。除了监视每个进程或对所有运行中的代码执行代码校对,几乎没有任何办法解决此问题。

创建进程查看处理程序

在 ASP.NET 中,主要使用两种方法来创建 HTTP 处理程序。第一种是通过创建带有 ASHX 扩展名的文件,另一种是创建实现 System.Web.IHttpHandler 的类,请参阅 IHttpHandler Interface。本文将着重介绍第二种形式。要创建 HTTP 处理程序,需要创建一个程序集(通常是一个代码库项目)和一个实现 System.Web.IHttpHandler 的类。然后将该类注册到 Web.Config(或 machine.config)文件中,然后它就可以接收请求了。如果查看 machine.config 文件(在相应命名的 httpHandlers 节中),将看到许多当前已注册的 HTTP 处理程序,包括 System.Web.UI.PageHandlerFactory(ASP.NET 页面的主处理程序)。在编写 HTTP 处理程序时,其实就是在定义处理请求的新方法。

所有 HTTP 处理程序均通过实现 System.Web.IHttpHandler Interface 来创建。此接口需要创建一个属性和一个方法,如表 3 所示。

表 3:IHttpHandler 接口的成员

成员 类型 说明
IsReusable 属性 (Boolean) 确定该处理程序的实例是否可以重复使用。通常,该属性应返回 true,除非处理程序需要对某个资源的独占访问。
ProcessRequest 方法 HTTP 处理程序的“主”方法。将在此添加对请求的所有处理。该类传递当前 ASP.NET 上下文。可以从此上下文中检索请求对象和响应对象。

实现 IHttpHandler

创建 HTTP 处理程序的大量工作集中在实现处理程序的 ProcessRequest。通常,需要存储当前上下文的请求和响应对象,然后使用响应对象的编写方法创建输出。以下给出了用于进程查看处理程序的 ProcessRequest 资源的 Microsoft Visual Basic® .NET 源。

    Public Sub ProcessRequest(ByVal context As HttpContext) _

       Implements IHttpHandler.ProcessRequest

        _context = context

        _writer = New HtmlTextWriter(context.Response.Output)



        'we only want to do this if we're enabled

        If _config.Enabled Then

            _writer.WriteLine("<html>")

            _writer.WriteLine("<head>")

            _writer.WriteLine(Me.StyleSheet)

            _writer.WriteLine("</head>")



            _writer.WriteLine("<body>")

            _writer.WriteLine("<span class=""content"">")



            'write content here

            'create table

            Dim t As New Table()

            With t

                .Width = Unit.Percentage(100)

                .CellPadding = 0

                .CellSpacing = 0

            End With



            'the meat of the routine

            'make certain this is a destination machine

            If (PermittedHost(_context.Request.UserHostAddress)) Then

                CreateHeader(t)

                AddProcesses(t)

                CreateFooter(t)

            Else

                CreateErrorReport(t)

            End If



            'write to the stream

            t.RenderControl(_writer)



            _writer.WriteLine("</span>\r\n</body>\r\n</html>")

        End If

    End Sub


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