如何:创建同步 HTTP 处理程序

本主题阐释一个 HTTP 处理程序的代码,该处理程序对 ASP.NET 应用程序中其 URL 以 .sample 结尾的资源执行同步请求处理。此代码示例阐释了下列内容:

  • 一个 HTTP 处理程序类的代码。该类必须实现 ProcessRequest 方法和 IsReusable 属性。

  • Web.config 文件中注册该处理程序并将 .sample 文件扩展名映射到该处理程序所需的元素。

  • 如何在 Internet 信息服务 (IIS) 中将 .sample 文件扩展名映射到 ASP.NET。

注意

在将配置文件更改为包含对新处理程序的引用后,ASP.NET Development Server 将处理对新资源的请求。若要启用 IIS 以处理该请求,请参见下面的过程。

当用户请求一个其 URL 以 .sample 结尾的资源时,Web 服务器将该请求转发给 ASP.NET。然后 ASP.NET 调用 HTTP 处理程序,后者返回一个响应。该响应由该处理程序动态创建;不需要存在具有文件扩展名 .sample 的文件。有关 ASP.NET 如何与 Web 服务器交互的更多信息,请参见 ASP.NET 生命周期

创建自定义 HelloWorldHandler HTTP 处理程序类

  1. 在网站的 App_Code 目录中,创建一个名为 HelloWorldHandler 的类。

  2. 向类文件中添加下面的代码。

  3. using System.Web;
    public class HelloWorldHandler : IHttpHandler
    {
        public HelloWorldHandler()
        {
        }
        public void ProcessRequest(HttpContext context)
        {
            HttpRequest Request = context.Request;
            HttpResponse Response = context.Response;
            // This handler is called whenever a file ending
            // in .sample is requested. A file with that extension
            // does not need to exist.
            Response.Write("<html>");
            Response.Write("<body>");
            Response.Write("<h1>Hello from a synchronous custom HTTP handler.</h1>");
            Response.Write("</body>");
            Response.Write("</html>");
        }
        public bool IsReusable
        {
            // To enable pooling, return true here.
            // This keeps the handler in memory.
            get { return false; }
        }
    }

这段代码实现 ProcessRequest 方法并将一个字符串写出到当前 HttpContext 对象的 Response 属性中。

注册自定义 HTTP 处理程序

创建完自定义 HTTP 处理程序类后,必须在应用程序的 Web.config 文件中注册它。这样,ASP.NET 在接收对其 URL 以 .sample 结尾的资源进行的请求时,可以找到该处理程序。

在 Web.config 文件中注册自定义 HTTP 处理程序

  1. 将一个 Web.config 文件添加到网站(如果该文件尚未存在)。

  2. 将下面突出显示的元素添加到 Web.config 文件中。

    <configuration>
    
        <system.web>
    
        <httpHandlers>            <add verb="*" path="*.sample"                   type="HelloWorldHandler"/>        </httpHandlers>
    
        </system.web>
    
        </configuration>

    这段代码按类名注册自定义处理程序,并将 .sample 文件扩展名映射到该处理程序。

  1. 在 IIS 6.0 中配置 HTTP 处理程序扩展名

你可能感兴趣的:(http)