ASP.NET 2.0 HttpHandler实现对某种文件类型权限保护(示例代码下载)

asp.net|示例|下载

学习整理了一下
(一). 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!" 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

 

时间: 2024-09-30 16:13:21

ASP.NET 2.0 HttpHandler实现对某种文件类型权限保护(示例代码下载)的相关文章

Asp.net 2.0 制作最原始的TextBox控件[一](示例代码下载)

asp.net|控件|示例|下载 (一). 概述         示例制作一个与Asp.net TextBox同样功能的 TextBox control, 可以了解一下        Control底层的实现原理(二). 代码实现      1. 核心控件生成代码文件TextBox.cs  1  1using System; 2  2using System.Data; 3  3using System.Configuration; 4  4using System.Web; 5  5using

ASP.NET 2.0 正式版中无刷新页面的开发(示例代码的补充)

asp.net|示例|刷新|无刷新|页面 原文请见Leon.Zhou的:http://pfzhou.cnblogs.com/archive/2006/03/31/363342.html 下载了示例代码,并转换成VB了,AJAX功能测试成功.但遇到些小问题:Demo1很正常.Demo2按Leon原来的写法testAJAX.aspx.vb中Line 22不成功.所以我直接在IDE环境中,修改button3的OnClientClick属性,见testAJAX.asp的Line 52.测试成功.Demo

ASP.NET 2.0 HttpHandler实现生成图片验证码(示例代码下载)

asp.net|示例|下载|验证码 学习整理了一下(一).功能       用HttpHandler实现图片验证码       (二).代码如下  1. 处理程序文件 ValidateImageHandler.ashx代码如下  1 <%@ WebHandler Language="C#" Class="ValidateImageHandler" %> 2  3 using System; 4 using System.Web; 5 using Syst

Asp.net 2.0 C#实现压缩/解压功能 (示例代码下载)

asp.net|示例|下载|压缩 (一). 实现功能    对文件及目录的压缩及解压功能(二). 运行图片示例  (三).代码    1. 压缩类     1/**//// <summary>  2/// 压缩类  3/// </summary>  4public class ZipClass  5{     6    public static void ZipFile(string FileToZip, string ZipedFile, int CompressionLeve

Asp.net 2.0 用C# 创建 PDF文件[引用] (示例代码下载)

asp.net|创建|示例|下载 (一). 功能   创建PDF文件(二). 代码  1using System;  2using System.Data;  3using System.Configuration;  4using System.Web;  5using System.Web.Security;  6using System.Web.UI;  7using System.Web.UI.WebControls;  8using System.Web.UI.WebControls.

ASP.NET 2.0 读取配置文件[INI](示例代码下载)

asp.net|示例|下载 (一). 功能          操作配置文件[*.ini]类 (二). 代码      1. 核心类文件 INIFILE.cs 代码  1 /// <summary> 2 /// INIFILE 操作类 3 /// </summary> 4 public class INIFILE 5 { 6     [DllImport("kernel32")] 7     private static extern long WritePriv

Asp.net 2.0 制作复合控件示例(二)[示例代码下载]

asp.net|控件|示例|下载 (一). 概述   通过制作一个<计算器>功能自定义复合控件演示复合控件的制作(二). 代码   1. 核心控件实现代码文件ComputeControl.cs  1using System;  2using System.Collections.Generic;  3using System.Text;  4using System.Web;  5using System.Web.UI;  6using System.Web.UI.WebControls; 

Asp.net 2.0 实现自定义Email格式有效性验证(示例代码下载)

asp.net|示例|下载 (一). 概述及功能          用了两种方法实现验证Email格式,Asp.net验证控件和手动编写代码验证.并用到简单工厂和适配品设计模式, 代码重构技术.    实现自定义Email邮件地址有效性验证, 完成如下功能:Question 11. Email 格式为 user@server.domain. 例如: King.Cheng@hotmail.com or King.Cheng@hotmail.com.cn or King.Cheng@hotmail.

asp.net 2.0 中加密web.config 文件中的配置节

asp.net|web|加密 在asp.net2.0中新增了对web.config中的部分数据进行加密的功能,可以使用RSAProtectedConfigurationProvider和DPAPIProtectedConfigurationProvider来加密,本文说明使用RSAProtectedConfigurationProvidert和计算机级别的密钥容器进行加密的步骤. 1.         首先确定要进行加密的web.config中的配置节是否可以加密 2.         创建RS