本主题阐释一个 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 处理程序类
-
在网站的 App_Code 目录中,创建一个名为
HelloWorldHandler
的类。 -
向类文件中添加下面的代码。
-
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 处理程序
-
将一个 Web.config 文件添加到网站(如果该文件尚未存在)。
-
将下面突出显示的元素添加到 Web.config 文件中。
<configuration> <system.web> <httpHandlers> <add verb="*" path="*.sample" type="HelloWorldHandler"/> </httpHandlers> </system.web> </configuration>
这段代码按类名注册自定义处理程序,并将 .sample 文件扩展名映射到该处理程序。
-
在 IIS 6.0 中配置 HTTP 处理程序扩展名