我的问题很简单(尽管答案很可能不是):我正在尝试决定如何在C# / ASP.NET中实现服务器端上传处理程序。
我使用过HttpModules (IHttpModule接口)和HttpHandlers (IHttpHandler接口),我想我可以使用这两种机制中的任何一种来实现它。我也意识到我不明白这两者之间的区别。
所以我的问题是:在什么情况下我应该选择使用IHttpHandler而不是IHttpModule (反之亦然)?
在流水线中是否有更高的执行率?在某些情况下更容易配置吗?在中等安全性下不能很好地工作吗?
发布于 2009-09-21 06:41:33
ASP.NET Web处理程序是响应向ASP.NET 应用程序发出的请求而运行的进程(通常称为“端点”)。最常见的处理程序是处理.aspx文件的ASP.NET页面处理程序。当用户请求.aspx文件时,页面通过页面处理程序处理该请求。您可以创建自己的HTTP处理程序,将自定义输出呈现给浏览器。
自定义HTTP处理程序的典型用法包括:
RSS源若要为网站创建
HTTP模块是对应用程序发出的每个请求都会调用的程序集。HTTP模块作为ASP.NET请求管道的一部分被调用,并且可以在整个请求过程中访问生命周期事件。HTTP模块允许您检查传入和传出的请求,并根据请求采取操作。
HTTP模块的典型用法包括:
HTTP安全性由于您可以检查传入的请求,因此模块可以在调用所请求的页、XML服务或处理程序之前执行自定义身份验证或其他安全检查。在以集成模式运行的Internet Information Services (IIS) 7.0中,可以将窗体身份验证扩展到application.
来自:http://msdn.microsoft.com/en-us/library/bb398986.aspx
发布于 2009-04-20 18:11:34
正如here所述,HttpModules是可以将自己插入到请求处理管道中的简单类,而HttpHandlers与HttpModules的不同之处不仅在于它们在请求处理管道中的位置,还因为它们必须映射到特定的文件扩展名。
发布于 2009-04-20 18:14:12
IHttpModule给了你更多的控制,你基本上可以控制所有的流量定向到你的Web应用程序。IHttpHandler提供的控制较少(流量在到达您的处理程序之前被过滤),但是如果这足以满足您的需求,那么我认为没有理由使用IHttpModule。
无论如何,最好将您的自定义逻辑放在一个单独的类中,然后只使用IHttpModule或IHttpHandler中的该类。这样一来,你就不必为选择哪一个而操心了。实际上,您可以创建一个额外的类来同时实现 IHttpHandler和IHttpModule,然后通过在Web.config中设置它来决定使用什么。
https://stackoverflow.com/questions/769432
复制相似问题