2011-01-07 56 views
0

因为我知道asp.net满足任何web应用程序的所有要求,但是在asp.net中创建自定义httphandler和httpmodule的基本规则是什么。在asp.net中的Httphandler和Httpmodule

编辑:例如,我想从数据库中获取图像,然后我应该使用httphandler或通常从数据库读取图像。如果httphandler那么为什么?

+0

“组中的规则”?我不确定你在问什么。 – NotMe 2011-01-07 17:14:41

回答

4

HTTPHandlers处理请求。但HTTPModules将访问请求上的生命周期事件。您只能有一个HTTPHandler,但可以插入多个HTTPModule来检查和处理请求。

1

好吧,现在我们知道你想从数据库中提取图像。

是的,使用通用处理程序(.ashx)是最好的方法。

这就像是说添加|新建项目并从列表中选择通用处理程序。

通用处理程序没有整个页面生命周期,这使得它们更快更容易处理。您只需在ProcessRequest方法中提供一些代码以将图像从数据库中提取出来,然后将response.binary写入浏览器。

1

根据拇指规则,HttpHandlers是您需要向浏览器,页面,图像或某些具体资源提供某些内容的时候。而HttpModules用于响应服务器上发生的事件。即处理错误,重写URL,记录东西,检查登录cookie,过滤输入或输出流等。

1

首先,请记住,ASP.NET页面是一个HTTP处理程序,只是一个功能更丰富的页面。 (该System.Web.UI.Page类实现IHttpHandler。)

正如克里斯·莱弗利指出,通用HTTP处理程序 - 这是你创建一个类实现IHttpHandler - 将是比使用,因为它标准的ASP.NET页面更简单,更高效不会贯穿整个页面生命周期,允许您专注于在ProcessRequest方法中制作输出,依此类推。

但是,如果手头的任务是专门从数据库中显示图像,而不是编写自己的HTTP处理程序,则考虑使用Microsoft的GeneratedImage control

简而言之,GeneratedImage控件是由Microsoft创建的HTTP处理程序基类,用于显示数据库图像。它很容易使用,支持缓存和一系列其他功能。为什么重新发明轮子?请参阅:Dynamically Generating and Caching Images in ASP.NET with the GeneratedImage Control。这里是文章的简介:

GeneratedImage控件是一个ASP.NET Web控件和一组类的组合,它们有助于以编程方式创建,提供,缓存和转换图像。如果将图像存储在需要从网页提供的数据库中,如果您需要即时创建图像,或者需要调整大小,添加水印或执行其他图像转换,那么GeneratedImage控件可以提供帮助。

快乐编程!

0
  • HTTP模块:每次请求之前和之后被调用。
  • HTTP处理程序:是过程,以处理在哪些方面请求(特别.aspx页)