我对httpmodules和httphandlers有一些疑问,我对它们的真正需求感到有些困惑,我创建了很多网站,但很少使用它们,确定我没有使用它们会失去好处,这些好处是什么?< / p>
何时使用以及何时不使用?
答案 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)