学习整理了一下
(一). 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 代码
1 using system;
2 using system.data;
3 using system.configuration;
4 using system.web;
5 using system.web.security;
6 using system.web.ui;
7 using system.web.ui.webcontrols;
8 using system.web.ui.webcontrols.webparts;
9 using system.web.ui.htmlcontrols;
10
11 /// <summary>
12 /// 只有 admin 权限用户才能直接查看 jpg和jpeg的图片
13 /// </summary>
14 public class jpghandler : ihttphandler
15 {
16 public jpghandler()
17 {
18 }
19 public void processrequest(httpcontext hc)
20 {
21 string strfilename = hc.server.mappath( hc.request.filepath );
22 if (hc.user.isinrole("admin")) //当前用户是否为 admin 权限
23 {
24 hc.response.contenttype = "image/jpeg";
25 hc.response.writefile(strfilename);
26 }
27 else
28 {
29 hc.response.contenttype = "image/jpeg";
30 hc.response.write("no right");
31 }
32 }
33 public bool isreusable
34 {
35 get
36 {
37 return true;
38 }
39 }
40 }
41
2.前台页面 *.aspx 代码
1 <%@ page language="c#" autoeventwireup="true" codefile="default.aspx.cs" inherits="_default" %>
2
3 <!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd">
4
5 <html xmlns="http://www.w3.org/1999/xhtml" >
6 <head runat="server">
7 <title>httphandler validate users right</title>
8 </head>
9 <body>
10 <form id="form1" runat="server">
11 <div>
12 <asp:linkbutton id="linkbutton1" runat="server" postbackurl="a.jpeg" tooltip="click me!" 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 <add verb="*" path="*.jpg,*.jpeg" type="jpghandler" />
4 </httphandlers>
5 </system.web>
6
在这里我是将处理程序类 jpghandler.cs 放到 app_code文件夹下面,如果此类不是放在此类下面,而是以程序集*.dll格式的,则应该将此程序集放到bin目录下面,并且这样配置:
1 <system.web>
2 <httphandlers>
3 <add verb="*" path="*.jpg,*.jpeg" type="jpghandler,yourdll" />
4 </httphandlers>
5 </system.web>
6
(三). 示例代码下载
http://www.cnblogs.com/files/chengking/jpghttphandler.rar
商业源码热门下载www.html.org.cn
新闻热点
疑难解答
图片精选