学习整理了一下
(一). HttpHandlers能够处理对某种特定文件类型的请求.
例如, 在machine.config 文件中默认已经有大部分的系统处理Handlers:
<httpHandlers>
<add verb=”*” path=”*.aspx” type=”System..Web.UI.PageHandlerFactory” />
<add verb=”*” path=”*.ascx” type=”System..Web.HttpForbiddenHandler” />
<add verb=”*” path=”*.cs” type=” System..Web.HttpForbiddenHandler” />
<add verb=”*” path=”*.skin” type=” System..Web.HttpForbiddenHandler” />
<add verb=”*” path=”*.sitemap” type=” System..Web.HttpForbiddenHandler” />
…….
</httpHandlers>
创建一个HttpHandler也非常简单,下面将创建一个自定义的HttpHandler,
功能为验证访问: *.jpeg/jpg 图像文件权限. 通过这个示例演示其用法.
(二).代码如下
1. 处理程序HttpHandler文件 JpgHandler.cs 代码
1usingSystem;
2usingSystem.Data;
3usingSystem.Configuration;
4usingSystem.Web;
5usingSystem.Web.Security;
6usingSystem.Web.UI;
7usingSystem.Web.UI.WebControls;
8usingSystem.Web.UI.WebControls.WebParts;
9usingSystem.Web.UI.HtmlControls;
10
11///<summary>
12///只有admin权限用户才能直接查看JPG和JPEG的图片
13///</summary>
14publicclassJpgHandler:IHttpHandler
15{
16publicJpgHandler()
17{
18}
19publicvoidProcessRequest(HttpContexthc)
20{
21stringstrFileName=hc.Server.MapPath(hc.Request.FilePath);
22if(hc.User.IsInRole("admin"))//当前用户是否为admin权限
23{
24hc.Response.ContentType="image/JPEG";
25hc.Response.WriteFile(strFileName);
26}
27else
28{
29hc.Response.ContentType="image/JPEG";
30hc.Response.Write("NoRight");
31}
32}
33publicboolIsReusable
34{
35get
36{
37returntrue;
38}
39}
40}
41
2.前台页面 *.aspx 代码
1<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="Default.aspx.cs"Inherits="_Default"%>
2
3<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4
5<htmlxmlns="http://www.w3.org/1999/xhtml">
6<headrunat="server">
7<title>HttpHandlervalidateusersright</title>
8</head>
9<body>
10<formid="form1"runat="server">
11<div>
12<asp:LinkButtonID="LinkButton1"runat="server"PostBackUrl="a.jpeg"ToolTip="Clickme!"OnClick="LinkButton1_Click"Width="149px">A.jpeg</asp:LinkButton>
13
14</div>
15</form>
16</body>
17</html>
18
3.在Web.Config文件中注册自己的处理程序类配置
1<system.web>
2<httpHandlers>
3<addverb="*"path="*.jpg,*.jpeg"type="JpgHandler"/>
4</httpHandlers>
5</system.web>
6
在这里我是将处理程序类 JpgHandler.cs 放到 App_Code文件夹下面,如果此类不是放在此类下面,而是以程序集*.dll格式的,则应该将此程序集放到bin目录下面,并且这样配置:
1<system.web>
2<httpHandlers>
3<addverb="*"path="*.jpg,*.jpeg"type="JpgHandler,YourDll"/>
4</httpHandlers>
5</system.web>
6
(三). 示例代码下载
http://www.cnblogs.com/Files/ChengKing/JpgHttpHandler.rar
分享到:
相关推荐
6.3.2 指定正确的ASP.NET权限给上传文件 172 6.3.3 理解文件大小的限制 173 6.3.4 把上传的文件放在Stream对象中 174 6.3.5 把文件内容从Stream对象移动到Byte数组中 175 6.4 MultiView和View服务器控件 175 ...
本书全面介绍了ASP.NET各种编程技能和2.0版中的巨大变化,并详细阐述了2.0版中的每个新特性。书中提供了大量的实例,可帮助读者快速掌握如何在.NET平台下开发功能强大的ASP.NET应用程序。本书适合有一些基础的ASP...
利用HttpHandler创建自定义后缀Rss源 通过IhttpHandler实现图片验证码 使用HttpHandler实现图片防盗链
本书详细讲解了ASP.NET请求流程.以及核心对象. ASP.NET架构详解HttpHandler和HttpModule高清PDF文字. 我身边的ASP.NET工程师都看过这个啦
主要介绍了ASP.NET实现伪静态网页方法小结,主要包括了利用Httphandler实现URL重写、地址重写、利用Mircosoft URLRewriter.dll实现页面伪静态等,需要的朋友可以参考下
asp.net 防注入的 HttpHandler asp.net 防注入的 HttpHandler
示例: Hello,HttpHandler(最...示例: 使用HttpHandler实现文件下载页面 -------------------------------------------------------------------------------- 示例: 添加图片访问的HttpHandler,为网站图片提供"水印
asp.net防图片盗链HttpHandler
.Net框架2.0以上版本 数据库采用MS SQL Server2005和Access2003 服务器采用IIS6.0 以上版本(调试时可用Visual Studio 2005自带的轻量级服务器) 开发工具采用Visual Studio 2005 2.本书所附光盘内容 第1章 3种...
Mincrosoft.NET Framework库为应用程序提供了丰富的组件和服务集,大大提高了软件开发的效率。 由于HttpHandler没有控件解析功能,因此不需要进行复杂的页面处理。 因此,效率显着提高。 它特别适用于服务器不需要将...
httpHandler实现.Net无后缀名Web访问
asp.net(c#)用httphandler加水印
此PPT讲述了Asp.Net WebAPI及相关Web服务技术发展历史。 共80多页,Asp.Net WebAPI在讲到第36页的时候才会出现,因为这个技术不是凭空产生的,它有着自己的演变进化的历史。我们要先弄清它从哪里来的?然后再说它能...
使用Asp.Net技术完成WebSocket开发。 使用HttpHandler,进行请求的过滤,处理websocket请求。
Asp.net+jQuery+HttpHandler+抽象工厂+七层架构=经典实例
运行环境:.net framework 2.0以上,sql2005以上,windows server2003以上,IIS6.0以上 本系统涉及.net开发方面很多技术,大概包括:web service,Httphandler,Ajax等。 本系统架构清晰,文件名,文件夹名,类名,...
本人在博客“Asp.Net底层解析(五)——HttpHandler详解”中的测试代码
Flex与.NET互操作(五):使用FileReference+HttpHandler实现文件上传/下载 一文的源码的完整工程文件,包含FLEX客户端和 ASP.NET服务端源码! 在VS2010和FLash builder4 中运行!
个例子来自于《Maximizing ASP.NET Real World, Object-Oriented Development》一书, 需要的朋友可以参考下。