httpsodules httphandlers,它们的理想用途是什么?何时使用何时不使用?

时间:2009-08-16 20:35:30

标签: asp.net

我对httpmodules和httphandlers有一些疑问,我对它们的真正需求感到有些困惑,我创建了很多网站,但很少使用它们,确定我没有使用它们会失去好处,这些好处是什么?< / p>

何时使用以及何时不使用?

6 个答案:

答案 0 :(得分:6)

您可以使用httpmodules进行身份验证,审核或网址重写。由于每个请求首先通过所有模块,因此在由httphandler处理之前,这是应用您希望在特定应用程序代码之前运行的代码的地方。

如果您不想依赖asp.net引擎,可以使用httphandler。例如,你可以编写自己的基于AJAX,XML和XSLT的渲染机制,它不依赖于传统的asp.net页面。

答案 1 :(得分:4)

您是否发现自己在ASPX Page_Load事件中编写代码以向响应发出内容然后调用Response.End?这可能最好写成HttpHandler(ashx)。

答案 2 :(得分:3)

当您希望通过完全更改行为或向文档添加前处理或后处理来更改IIS的默认文档处理时,HttpModules和HttpHandler非常有用。

我用于HttpModule的一个实际应用是动态缩略图创建。我写了一个处理所有图像请求的HttpModule。如果请求包含查询字符串“?thumb”,我会动态生成缩略图而不是提供原始图像。

我还看到HttpModules用于从aspx页面输出和url重写中删除注释和空格。

答案 3 :(得分:3)

我会引用用法,人们已经给出了很好的定义。

HTTP处理程序
 想要将网站的站点地图呈现给搜索引擎爬虫的映像,而不是弹出文件保存对话框(当ASP.NET / IIS没有所请求文件类型的默认处理程序时,会出现文件保存对话框,例如.txt )。  我编写了一个HTTP Handler来动态构建站点地图文件(从DB中提取站点地图信息)。

答案 4 :(得分:2)

HttpHandlers非常适合重新路由某些文件类型和其他资源的请求。例如,当您需要对ASP.NET无法通过FormsAuthentication保护的文件类型的传入请求执行某些操作时,您实际上可以确定它是否是特定文件类型,位于特定目录中并将用户重定向到如果没有授权,则另一页。

HttpModules可以以独立于资源的方式为您的应用执行特定处理。可以在此处找到更具技术性的解释: http://www.15seconds.com/issue/020417.htm

此外,它们确实会增加每个请求的开销,这意味着您不应将它们用于过程密集型任务。

答案 5 :(得分:2)

只能在ASP.NET管道模型的上下文中理解处理程序和模块,以及您创建的自定义处理程序/模块如何适合该模型。

一些好的资源herehere

正如其他人提到的那样模块可用于在某些事件点创建行为(另一种常见用途是全局异常处理),处理程序创建端点请求处理(它不是只是一个聪明的名字)一个asp.net页面实例(最终只是一个严重包装的处理程序)将是不必要的沉重或完全错误。我个人在任何时候创建一些不输出HTML的东西,随着你开发网络应用程序而不是网站,你越来越普遍。

相关问题