首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IHttpHandler vs IHttpModule

IHttpHandler vs IHttpModule
EN

Stack Overflow用户
提问于 2009-04-20 18:05:37
回答 5查看 26.6K关注 0票数 81

我的问题很简单(尽管答案很可能不是):我正在尝试决定如何在C# / ASP.NET中实现服务器端上传处理程序。

我使用过HttpModules (IHttpModule接口)和HttpHandlers (IHttpHandler接口),我想我可以使用这两种机制中的任何一种来实现它。我也意识到我不明白这两者之间的区别。

所以我的问题是:在什么情况下我应该选择使用IHttpHandler而不是IHttpModule (反之亦然)?

在流水线中是否有更高的执行率?在某些情况下更容易配置吗?在中等安全性下不能很好地工作吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-09-21 06:41:33

ASP.NET Web处理程序是响应向ASP.NET 应用程序发出的请求而运行的进程(通常称为“端点”)。最常见的处理程序是处理.aspx文件的ASP.NET页面处理程序。当用户请求.aspx文件时,页面通过页面处理程序处理该请求。您可以创建自己的HTTP处理程序,将自定义输出呈现给浏览器。

自定义HTTP处理程序的典型用法包括:

RSS源若要为网站创建

  • 源,可以创建一个发出RSS格式的处理程序。然后,可以将文件扩展名(如.rss )绑定到自定义处理程序。当用户向您的网站发送以.rss结尾的请求时,ASP.NET会调用您的处理程序来处理该请求。

  • 图像服务器如果您希望Web应用程序提供各种大小的图像,您可以编写一个自定义处理程序来调整图像的大小,然后将它们作为处理程序的响应发送给用户。

HTTP模块是对应用程序发出的每个请求都会调用的程序集。HTTP模块作为ASP.NET请求管道的一部分被调用,并且可以在整个请求过程中访问生命周期事件。HTTP模块允许您检查传入和传出的请求,并根据请求采取操作。

HTTP模块的典型用法包括:

HTTP安全性由于您可以检查传入的请求,因此模块可以在调用所请求的页、XML服务或处理程序之前执行自定义身份验证或其他安全检查。在以集成模式运行的Internet Information Services (IIS) 7.0中,可以将窗体身份验证扩展到application.

  • Statistics和日志记录中的所有内容类型。由于每次请求时都会调用HTTP模块,因此可以在集中的模块中收集请求统计信息和日志信息,而不是在单个pages.
  • Custom页眉或页脚中收集请求统计信息和日志信息。由于可以修改传出响应,因此可以将诸如自定义页眉信息之类的内容插入到每个页或XML Services响应中。

来自:http://msdn.microsoft.com/en-us/library/bb398986.aspx

票数 70
EN

Stack Overflow用户

发布于 2009-04-20 18:11:34

正如here所述,HttpModules是可以将自己插入到请求处理管道中的简单类,而HttpHandlers与HttpModules的不同之处不仅在于它们在请求处理管道中的位置,还因为它们必须映射到特定的文件扩展名。

票数 16
EN

Stack Overflow用户

发布于 2009-04-20 18:14:12

IHttpModule给了你更多的控制,你基本上可以控制所有的流量定向到你的Web应用程序。IHttpHandler提供的控制较少(流量在到达您的处理程序之前被过滤),但是如果这足以满足您的需求,那么我认为没有理由使用IHttpModule

无论如何,最好将您的自定义逻辑放在一个单独的类中,然后只使用IHttpModuleIHttpHandler中的该类。这样一来,你就不必为选择哪一个而操心了。实际上,您可以创建一个额外的类来同时实现 IHttpHandlerIHttpModule,然后通过在Web.config中设置它来决定使用什么。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/769432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档