HttpHandler初探 - 页面上输出图像

ASP.NET处理底层HTTP请求有2种方式:

1)HttpModule      2) HttpHandler

今天我们来看一下HttpHandler的基本应用。

 

场景:利用HttpHandler在页面上输出一张图像。

在项目中添加HttpHandler的方法有2种:

一种是利用VS2008自带的Generic Handler模板添加扩展名为.ashx的文件。

另一种是利用WebConfig文件中的HttpHandler映射。

 

方法一(ashx模板):

首先利用VS2008自带的Generic Handler模板添加扩展名为.ashx的文件,

ashx代码如下:

using System;
using System.Web;

namespace AspNet35.Advanced
{
    
    public class picHandler : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "image/jpeg";
            context.Response.WriteFile("../Images/Garden.jpg");
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }

}

 

然后在显示图片的页面中将<img>的源指向该ashx文件,aspx文件代码如下:

<div>
    <img src="picHandler.ashx" />
</div>

 

 

方法二(WebConfig映射):

首先建立一个实现IHttpHandler接口的类,代码如下:

using System.Web;

public class MyPicHandler : IHttpHandler
{

    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "image/jpeg";
        context.Response.WriteFile("~/Images/Sea.jpg");
    }

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }

}

 

然后在WebConfig文件中映射该类,Web.config代码如下:

<system.web>
  
  <httpHandlers>
    
    <add verb="*" path="MyImage" type="MyPicHandler, App_Code" />
  </httpHandlers>
</system.web>

 

最后在page页面中将<img>的源指向webconfig文件中映射的别名,既path后面的名字,page代码如下:

<div>
    <img src="MyImage" />
</div>

 

 

 

 

时间: 2024-09-21 02:38:32

HttpHandler初探 - 页面上输出图像的相关文章

ix able-FixTable 固定表头之后,如果通过JS获取页面上控件的值??

问题描述 FixTable 固定表头之后,如果通过JS获取页面上控件的值?? $(function() { FixTable("MyTable",2, $(document.body).width()+10, $(document.body).height() - 50); }); 解决方案 不用jquery选中你的对象就行了,如果FixTable更改过DOM对象结构,需要用开发工具看下修改后的结构,调整你的选择器

如何在Web页面上直接打开、编辑、创建Office文档

web|创建|页面 有朋友询问如何在Web页面上做到像SharePoint中的效果一样,能直接激活客户端的Word来打开.doc文件,而不是类似直接点击.doc文档链接时Word在IE中被打开那样.想想这个问题应该很多人都会感兴趣,所以干脆写一篇blog来大致描述一下方法. 在安装Office2003以后,有一个ActiveX控件被安装到了系统中,这个控件位于"Program Files\Microsoft Office\OFFICE11\owssupp.dll".通过这个控件,客户端

chrome爬页面上表格某列的数据

有的时候会有这样一个需求,页面上有个大表格,我需要复制里面的一列到本地.比如,我要从表格里面,复制列出来的所有机器IP(这样比数据库导出方便点~) 首先,先用chrome的开发者工具,找到要复制的列中的某一个单元格,然后选择复制xpath.这样会复制下来这个元素的xpath路径,比如: //*[@id="machineGroupTable"]/tbody/tr[2]/td[2] chrome的console,支持用$x()函数直接用xpath来定位元素,因此,可以通过类似这样的js,来

页面上所有的链接都在新窗口打开

链接|页面     要想页面上所有的链接都在新窗口打开,在页面中加入:     <head>     <base target="_blank">     </head>     注意事项:< base >必须写在< head >标记里

一个页面上连接两种不同数据库 是否可行

一个页面上连接两种不同数据库,进行操作...不知道,是否可行? 有这可能吗? 当然可以 mssql ConnStr = "driver={SQL Server};server=192.168.1.110;database=news;uid=sa;pwd=123456" Set conn = Server.CreateObject("ADODB.Connection") conn.Open ConnStr mysql set myconn = server.creat

解决WEB页面上焦点控制2种方法--如回车使光标在在TEXTBOX之间移动(从网上获得)

web|解决|控制|页面   方法1:from 听棠.NET 用客户端脚本在页面添加document的onkeydown事件,让页面在接受到回车事件后,进行Tab键的功能,即只要把event的keyCode由13变为9  VBScript代码:  <script language="vbscript">  sub document_onkeydown     if event.keyCode=13 then       event.keyCode=9    end if  

使用css在不同页面上使用同样的导航代码

css|导航|页面 查了相关的资料,在这个过程中发现,使用flash实现这样的效果需要通过后台,这个因为我不太了解,暂且不表,说说最近在学的css 如何用css实现在不同页面上使用相同的导航代码 原理:通过为每个页面的body定义一个id根据css的继承特性("好像有这个说法吧,不好意思记得不是很清楚")利用#body #nav a的形式实现在不同页面中与页面相对应的链接的颜色与其它链接的颜色不同 下面看看我的代码: 常规的链接可以这样定义#topnav a:hover,#topnav

在自己的网页页面上实现Google PR值的显示

google|pr值|网页|显示|页面 Google本身提供了查询指定的url的PageRank值的接口,知道了这个接口,就可以很容易编写脚本在页面上实现这一功能,而无需再依赖google toolbar才能进行查询.本文提供了一个用PHP实现的pr查询接口. 使用很简单,只要在需要的地方 〈?php include_once("./pr.inc.php"); echo getPR($urlToQuery); ?〉 即可显示出指定url的PageRank的数值.知道了这个数值再在其基础

动态的在页面上增加或删除一个文本框

动态|文本框|页面 在web开发中,经常会遇到这样的问题:怎么样动态的在页面上增加或删除一个文本输入框?通常有两种方法:1.利用后台服务:比如在session中设置一个变量num,每点一次"增加"按钮num的值+1,然后页面刷新一下(返回该页面).显示的时候从session中取到num的值,然后使用循环生成input框<% for(int i;i<num;i++)){ %><input type="text" name="aaa&q