现在的位置: 首页 > 综合 > 正文

开始学习ASP.net——如何利用ASP.net动态输出图片

2013年10月10日 ⁄ 综合 ⁄ 共 1772字 ⁄ 字号 评论关闭

1.引言

做ASP.net开发大部分时间是在动态输出html文件,通过<img src=xxx.jpg />连接静态的图片文件。所做的编程工作也大部分是在aspx文件里添加代码。其实所作的就是完善Page类得派生类。因为所有的aspx对应的类都是继承自Page。而Page类本身负责完成整个页面生存周期的管理工作。但有时候,输出并不需要复杂的html页面,而是简单的图片,如验证码就是个非常典型的例子。

2请求执行流程与通用处理程序

HttpApplication根据web.cofig中处理程序的映射关系,根据url找到对应的实现了IHttpHandler的类,并实例化后,调用类的ProcessRequest()方法,完成渲染输出。由于ASP.netWeb程序的大部分工作是输出html,所以微软已经设计好了一个实现了IHttpHandler接口的Page类来处理此项任务。而对于其他的输出,如图片,压缩文件,纯文本,xls文件等等,微软没有单独提供处理程序,而是通过提供一种叫做“通用处理程序”的ashx来完成,微软做的是已经把ashx文件映射工作处理好了,我们只需要完成IHttpHandler的接口函数就可以了。

 

3输出图片的步骤

在VS2010中,右键网站项目,选择添加新项-->一般处理程序,会增加一个.ashx文件,内容如下:

可以看到,代码中定义了一个Handler类,实现了IHttpHandler接口。我们需要做的就是完善ProcessRequest这个接口函数。下面代码输出一个简单的矩形图像。

如果需要在其他html文档中显示动态生成的图片,那么只要在html文档中加入如下代码即可:

<img src="xxx.ashx" />

4 输出其他类型

利用ashx(active server handler extend),我们可以实现输出任何http协议规范中的文档类型。当然也包括html,如果你不想使用复杂的aspx,完全可以自己利用ashx完成简单html的输出任务。不过也就失去了Page类的生命周期管理的便利性,还是看具体要求来决定是否使用Page类(aspx)。

 

抱歉!评论已关闭.