在VS中右击项目,添加新项,我们找到.ashx文件在新建项模板中叫做“一般处理程序”,那么这个一般处理程序用来干吗的呢?

我们可以这样地简单理解,嗯,不需搞得太复杂,它就类似.aspx文件,用于处理传入到服务器的HTTP请求,但它不会像.aspx文件那样要返回处理结果和大量HTML,它可以返回简单的字符串、图片等。

大家知道,HttpHandle需要在Web.Config文件中进行相应的配置,那么,如果不配置呢?能否直接使用?可以的,来,动手玩玩。

1、在项目中添加一个.ashx文件,并改写默代码,如下:

  1. using System;
  2. using System.Web;
  3. public class imageHandle : IHttpHandler {
  4. public void ProcessRequest (HttpContext context) {
  5. context.Response.ContentType = "image/jpeg";
  6. string imgPath = @"~/images/{0}.jpg";
  7. //根据请求的查询字符串显示对应图片
  8. switch (context.Request.QueryString["id"])
  9. {
  10. case "1":
  11. context.Response.WriteFile(context.Server.MapPath(string.Format(imgPath, "1")));
  12. break;
  13. case "2":
  14. context.Response.WriteFile(context.Server.MapPath(string.Format(imgPath, "2")));
  15. break;
  16. case "3":
  17. context.Response.WriteFile(context.Server.MapPath(string.Format(imgPath, "3")));
  18. break;
  19. default:
  20. //默认显示第一张图片
  21. context.Response.WriteFile(context.Server.MapPath(string.Format(imgPath, "1")));
  22. break;
  23. }
  24. }
  25. public bool IsReusable {
  26. get {
  27. return true;
  28. }
  29. }
  30. }

我简单说一下,这个类,根据请求的查询参数,返回对应的图片,所以,你可以随便准备3张图片做测试。

2、做好.aspx页面。

  1. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head runat="server">
  5. <title></title>
  6. </head>
  7. <body>
  8. <form id="form1" runat="server">
  9. <div>
  10. <div>
  11. <img id="img" src="data:images/1.jpg" height="300px" />
  12. </div>
  13. <a href="#" onclick="GetImg(1)">1</a>
  14. <a href="#" onclick="GetImg(2)">2</a>
  15. <a href="#" onclick="GetImg(3)">3</a>
  16. </div>
  17. </form>
  18. </body>
  19. </html>
  20. <script type="text/javascript">
  21. function GetImg(index) {
  22. var myImg = document.getElementById('img');
  23. myImg.src = './imageHandle.ashx?id=' + index;
  24. }
  25. </script>

这个例子是这样的,有三个链接,分别为1、2、3,点击后显示对应的图片。

.

我们在不配置Web.Config的情况下应用了HttpHandle,下面我配置一下Web.Config文件。

找到HttpHandlers节,并添加一个节点。

  1. <add verb="*" path="loadimg" type="imageHandle" validate="false"/>

然后,把.aspx页面也改一下。

  1. <script type="text/javascript">
  2. function GetImg(index) {
  3. var myImg = document.getElementById('img');
  4. myImg.src = './loadimg?id=' + index;
  5. }
  6. </script>

这时候,神奇地发现无效了。咋回事呢?是不是没有把文件放进App_Code的原因?

把.ashx文件扔到App_Code目录下,结果发现,还是不行。

于是,我不用.ashx文件,直接新建一个.cs文件,把刚才.ashx里面的C#代码复制过去,并把类名改一下,接着运行。

这回成功了,是不是就说明,在Web.Config中配置的httpHandler对于.ashx中定义的类是无效的?

ASP.NET大闲话:ashx文件有啥用的更多相关文章

  1. ASP.NET的SEO:使用.ashx文件——排除重复内容

    本系列目录 不同的链接指向的页面如果具有大量相同的内容,这种现象就会被称为"重复内容",如果一个网站的重复内容很多,搜索引擎就会认为这个网站的价值不高.所以我们应尽量避免各种重复内 ...

  2. 使用NeatUpload控件实现ASP.NET大文件上传

    使用NeatUpload控件实现ASP.NET大文件上传 一般10M以下的文件上传通过设置Web.Config,再用VS自带的FileUpload控件就可以了,但是如果要上传100M甚至1G的文件就不 ...

  3. asp.net中.ashx文件接参

    如果是在解决方案中的Web项目中创建.ashx文件,没有文件头,不能直接读取到html页面传来的参数值. 用context.Request["参数名"]来获取参数值. 用conte ...

  4. .net mvc 站点自带简易SSL加密传输 Word报告自动生成(例如 导出数据库结构) 微信小程序:动画(Animation) SignalR 设计理念(一) ASP.NET -- WebForm -- ViewState ASP.NET -- 一般处理程序ashx 常用到的一些js方法,记录一下 CryptoJS与C#AES加解密互转

    .net mvc 站点自带简易SSL加密传输   因项目需要,传输数据需要加密,因此有了一些经验,现简易抽出来分享! 请求:前端cryptojs用rsa/aes 或 rsa/des加密,后端.net ...

  5. asp.net和js读取文件的MD5值的方法

    前言 文件的md5值,即文件签名,为了验证文件的正确性,是否被恶意篡改等.每个文件有一个唯一的md5值. 最近公司开发的app文件包的校验就有用到文件md5值. 一.asp.net获取 ①和上传文件一 ...

  6. Asp.Net实现无刷新文件上传并显示进度条(非服务器控件实现)(转)

    Asp.Net实现无刷新文件上传并显示进度条(非服务器控件实现) 相信通过Asp.Net的服务器控件上传文件在简单不过了,通过AjaxToolkit控件实现上传进度也不是什么难事,为什么还要自己辛辛苦 ...

  7. Ajax跨域请求ashx文件与Webservice文件

    前台页面: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1 ...

  8. ashx文件的使用

    转自:http://www.cnblogs.com/Tally/archive/2013/02/19/2916499.html ashx是什么文件 .ashx 文件用于写web handler的..a ...

  9. ASP.NET -- 一般处理程序ashx

    ASP.NET  --   一般处理程序ashx 如果在一个html页面向服务器端请求数据,可用ashx作为后台页面处理数据.ashx适合用作数据后台处理,相当于WebForm中的aspx.cs文件或 ...

随机推荐

  1. keepalived+nginx安装配置

    软件版本号: pcre8.36 ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.36.tar.gz keepalived1.2 ...

  2. Spark SQL Catalyst源代码分析之UDF

    /** Spark SQL源代码分析系列文章*/ 在SQL的世界里,除了官方提供的经常使用的处理函数之外.一般都会提供可扩展的对外自己定义函数接口,这已经成为一种事实的标准. 在前面Spark SQL ...

  3. 负margin使用注意的一个问题

    在项目实力中经经常使用到负margin 如: <div id="test"> <ul> <li>子元素1</li> <li&g ...

  4. [水题]4242 果实计数&&3214 采访对象

    4242 果实计数  时间限制: 1 s  空间限制: 32000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description 淘淘家有棵奇怪的苹果树,这棵树共有n+1层 ...

  5. P1830 轰炸III

    P1830 轰炸III 84通过 145提交 题目提供者wanglichao1121 标签模拟矩阵洛谷原创 难度普及/提高- 提交该题 讨论 题解 记录 最新讨论 暂时没有讨论 题目背景 一个大小为N ...

  6. sql_server_action

    ''' SELECT * FROM Info_Roles WHERE Flag=1 LIMIT 2; select top y * from 表 where 主键 not in(select top ...

  7. C++ 函数模板与类模板(使用 Qt 开发编译环境)

    注意:本文中代码均使用 Qt 开发编译环境,如有疑问和建议欢迎随时留言. 模板是 C++ 支持参数化程序设计的工具,通过它可以实现参数多态性.所谓参数多态性,就是将程序所处理的对象的类型参数化,使得一 ...

  8. Fiddler抓取https请求,解决“证书错误”警告

    要抓取走HTTPS内容,Fiddler必须解密HTTPS流量. 但是,浏览器将会检查数字证书,并发现会话遭到窃听.为了骗过浏览 器,Fiddler通过使用另一个数字证书重新加密HTTPS流量. Fid ...

  9. YTU 2760: 字符串---首字母变大写

    2760: 字符串---首字母变大写 时间限制: 1 Sec  内存限制: 128 MB 提交: 343  解决: 136 题目描述 输入一行英文句子,将每个单词的第一个字母改成大写字母. 输入 一个 ...

  10. CSS小代码汇总整理

    /**实现斑马线的表格*/table.flexme tbody tr:nth-child(2n){background-color:#D6E7FC;} /*返回偶数序的子元素*/table.flexm ...