网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 大学论文导航 设计下载 最新论文 下载排行 原创论文 论文源代码
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > ASP.net > 正文

ASP.NET的HTTP模块和处理程序之处理程序的执行

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/01/09

ASP.NET运行时对HTTP处理程序的使用方式

无论你是否相信,ASP.NET都使用HTTP请求实现了大量的自己的功能。ASP.NET使用处理程序来处理.aspx、.asmx、.soap和其它ASP.NET文件。

下面是machine.config文件中的一个片段:

  1. <httpHandlers>  
  2. <add verb="*" path="trace.axd" type="System.Web.Handlers.TraceHandler"/>  
  3. <add verb="*" path="*.aspx" type="System.Web.UI.PageHandlerFactory"/>  
  4. <add verb="*" path="*.ashx" type="System.Web.UI.SimpleHandlerFactory"/>  
  5. <add verb="*" path="*.config" type="System.Web.HttpForbiddenHandler"/>  
  6. <add verb="GET,HEAD" path="*" type="System.Web.StaticFileHandler"/>  
  7.  . . . . . .   
  8.  . . . . . .  
  9. </httpHandlers> 

在上面的配置信息中你可以看到对.aspx文件的所有请求都由System.Web.UI.PageHandlerFactory类来处理。与此类似,对.config文件和其它文件(它们不能被客户端直接访问)的所有请求都由System.Web.HttpForbiddenHandler类处理。你可能已经猜到,当访问这些文件的时候,该类简单地给客户端返回一个错误信息。

执行HTTP处理程序

现在你将看到如何实现一个HTTP处理程序。那么我们的新处理程序要做什么任务呢?前面我提到,处理程序大多数用于给Web服务器添加新功能;因此,我将建立一个处理程序来处理新的文件类型——扩展名为.15seconds的文件。我们建立了这个处理程序并在我们的Web应用程序的web.config文件中注册之后,所有对.15seconds文件的请求都将由这个新处理程序来处理。

你可能正在考虑这个处理程序的使用方法。如果你希望引入一种新的服务器脚本语言或动态服务器文件(例如asp、aspx)该怎么办呢?你可以为它编写一个自己的处理程序。类似地,如果你希望在IIS上运行Java小程序、JSP和其它一些服务器端Java组件应该怎么办呢?一种方法是安装某些ISAPI扩展(例如Allaire或Macromedia Jrun)。你也可以编写自己的HTTP处理程序。尽管这对于第三方厂商(例如Allaire和Macromedia)来说是很复杂的事务,但是它却是个很有吸引力的选择,因为它们的HTTP处理能够能够访问ASP.NET运行时暴露的所有新功能。

实现我们的HTTP处理程序包含以下步骤:

1.编写一个实现IHttpHandler接口的类。

2. 在web.config或machine.config文件中注册这个处理程序。

3.在Internet服务管理器中把文件扩展(.15seconds)映射到ASP.NET ISAPI扩展DLL(aspnet_isapi.dll)上。

第一步

在Visual Studio.NET中建立一个新的C#类库项目,并把它命名为“MyHandler”。Visual Studio.NET将自动地给项目添加一个叫做“Class1.cs”的类。把它改名为“NewHandler”;在代码窗口中打开这个类,并把类的名称和构造函数的名称改成“NewHandler”。

下面是NewHandler类的代码:

  1. using System;  
  2. using System.Web;  
  3.  
  4. namespace MyHandler  
  5. {  
  6.  public class NewHandler : IHttpHandler  
  7.  {  
  8. public NewHandler()  
  9. {  
  10.  // TODO: 此处添加构造逻辑  
  11. }  
  12.  
  13. #region Implementation of IHttpHandler  
  14. public void ProcessRequest(System.Web.HttpContext context)  
  15. {  
  16.  HttpResponse objResponse = context.Response ;  
  17.  objResponse.Write("<html><body><h1>Hello 15Seconds Reader ") ;  
  18.  objResponse.Write("</body></html>") ;  
  19. }  
  20.  
  21. public bool IsReusable  
  22. {  
  23.  get  
  24.  {  
  25. return true;  
  26.  }  
  27. }  
  28. #endregion  
  29.  }  

网学推荐

免费论文

原创论文

设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号