ASP.NET大闲话:ashx文件有啥用
在VS中右击项目,添加新项,我们找到.ashx文件在新建项模板中叫做“一般处理程序”,那么这个一般处理程序用来干吗的呢?
我们可以这样地简单理解,嗯,不需搞得太复杂,它就类似.aspx文件,用于处理传入到服务器的HTTP请求,但它不会像.aspx文件那样要返回处理结果和大量HTML,它可以返回简单的字符串、图片等。
大家知道,HttpHandle需要在Web.Config文件中进行相应的配置,那么,如果不配置呢?能否直接使用?可以的,来,动手玩玩。
1、在项目中添加一个.ashx文件,并改写默代码,如下:
- using System;
- using System.Web;
- public class imageHandle : IHttpHandler {
- public void ProcessRequest (HttpContext context) {
- context.Response.ContentType = "image/jpeg";
- string imgPath = @"~/images/{0}.jpg";
- //根据请求的查询字符串显示对应图片
- switch (context.Request.QueryString["id"])
- {
- case "1":
- context.Response.WriteFile(context.Server.MapPath(string.Format(imgPath, "1")));
- break;
- case "2":
- context.Response.WriteFile(context.Server.MapPath(string.Format(imgPath, "2")));
- break;
- case "3":
- context.Response.WriteFile(context.Server.MapPath(string.Format(imgPath, "3")));
- break;
- default:
- //默认显示第一张图片
- context.Response.WriteFile(context.Server.MapPath(string.Format(imgPath, "1")));
- break;
- }
- }
- public bool IsReusable {
- get {
- return true;
- }
- }
- }
我简单说一下,这个类,根据请求的查询参数,返回对应的图片,所以,你可以随便准备3张图片做测试。
2、做好.aspx页面。
- <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head runat="server">
- <title></title>
- </head>
- <body>
- <form id="form1" runat="server">
- <div>
- <div>
- <img id="img" src="data:images/1.jpg" height="300px" />
- </div>
- <a href="#" onclick="GetImg(1)">1</a>
- <a href="#" onclick="GetImg(2)">2</a>
- <a href="#" onclick="GetImg(3)">3</a>
- </div>
- </form>
- </body>
- </html>
- <script type="text/javascript">
- function GetImg(index) {
- var myImg = document.getElementById('img');
- myImg.src = './imageHandle.ashx?id=' + index;
- }
- </script>
这个例子是这样的,有三个链接,分别为1、2、3,点击后显示对应的图片。

.
我们在不配置Web.Config的情况下应用了HttpHandle,下面我配置一下Web.Config文件。
找到HttpHandlers节,并添加一个节点。
- <add verb="*" path="loadimg" type="imageHandle" validate="false"/>
然后,把.aspx页面也改一下。
- <script type="text/javascript">
- function GetImg(index) {
- var myImg = document.getElementById('img');
- myImg.src = './loadimg?id=' + index;
- }
- </script>
这时候,神奇地发现无效了。咋回事呢?是不是没有把文件放进App_Code的原因?
把.ashx文件扔到App_Code目录下,结果发现,还是不行。
于是,我不用.ashx文件,直接新建一个.cs文件,把刚才.ashx里面的C#代码复制过去,并把类名改一下,接着运行。
这回成功了,是不是就说明,在Web.Config中配置的httpHandler对于.ashx中定义的类是无效的?
ASP.NET大闲话:ashx文件有啥用的更多相关文章
- ASP.NET的SEO:使用.ashx文件——排除重复内容
本系列目录 不同的链接指向的页面如果具有大量相同的内容,这种现象就会被称为"重复内容",如果一个网站的重复内容很多,搜索引擎就会认为这个网站的价值不高.所以我们应尽量避免各种重复内 ...
- 使用NeatUpload控件实现ASP.NET大文件上传
使用NeatUpload控件实现ASP.NET大文件上传 一般10M以下的文件上传通过设置Web.Config,再用VS自带的FileUpload控件就可以了,但是如果要上传100M甚至1G的文件就不 ...
- asp.net中.ashx文件接参
如果是在解决方案中的Web项目中创建.ashx文件,没有文件头,不能直接读取到html页面传来的参数值. 用context.Request["参数名"]来获取参数值. 用conte ...
- .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 ...
- asp.net和js读取文件的MD5值的方法
前言 文件的md5值,即文件签名,为了验证文件的正确性,是否被恶意篡改等.每个文件有一个唯一的md5值. 最近公司开发的app文件包的校验就有用到文件md5值. 一.asp.net获取 ①和上传文件一 ...
- Asp.Net实现无刷新文件上传并显示进度条(非服务器控件实现)(转)
Asp.Net实现无刷新文件上传并显示进度条(非服务器控件实现) 相信通过Asp.Net的服务器控件上传文件在简单不过了,通过AjaxToolkit控件实现上传进度也不是什么难事,为什么还要自己辛辛苦 ...
- Ajax跨域请求ashx文件与Webservice文件
前台页面: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1 ...
- ashx文件的使用
转自:http://www.cnblogs.com/Tally/archive/2013/02/19/2916499.html ashx是什么文件 .ashx 文件用于写web handler的..a ...
- ASP.NET -- 一般处理程序ashx
ASP.NET -- 一般处理程序ashx 如果在一个html页面向服务器端请求数据,可用ashx作为后台页面处理数据.ashx适合用作数据后台处理,相当于WebForm中的aspx.cs文件或 ...
随机推荐
- Linux Framebuffer驱动剖析之中的一个—软件需求
嵌入式企鹅圈将以本文作为2015年的终结篇,以回应第一篇<Linux字符设备驱动剖析>.嵌入式企鹅圈一直专注于嵌入式Linux和物联网IOT双方面的原创技术分享,稍后会公布嵌入式企鹅圈的2 ...
- 如何理解Apache License, Version 2.0(整理)
如何理解Apache License, Version 2.0(整理) 问题: 最近看到apache发布了2.0版本的License.而且微软也以此发布了部分源代码.我对OpenSource不是特熟, ...
- go语言笔记——append是内置的函数!!!new是一个函数!!!调试可以使用闭包,本质上是print调试,尼玛!
内置函数 Go 语言拥有一些不需要进行导入操作就可以使用的内置函数.它们有时可以针对不同的类型进行操作,例如:len.cap 和 append,或必须用于系统级的操作,例如:panic.因此,它们需要 ...
- 重装mysql
重装mysql方法. 转自http://blog.sina.com.cn/s/blog_73000beb01012eh4.html 1.删除 mysql 1.1 sudo apt-get autore ...
- IJ:IJ笔记1
ylbtech-IJ:IJ笔记1 1. 下拉框返回顶部 1. <form:select id="type" path="baseId" class=&qu ...
- codeforces 764D
脑洞 很早以前没有补掉的题目 四色问题肯定使有解的,然后就是怎么构造.注意到边长是奇数,那么我们就可以分类,按左上角坐标的奇偶性分类,正好对应四种颜色.因为当两个矩形左上角横纵坐标奇偶性不同时,那么肯 ...
- Android webkit keyevent 事件传递过程
前言:基于android webview 上定制自己使用的可移植浏览器apk,遇到好多按键处理的问题.所以索性研究了一下keyevent 事件的传递流程. frameworks 层 keyevent ...
- 01_ndk目录介绍
精力都放在安卓上.所以说呢C这个东西不要纠结太多,对大家的要求就是能看懂,会调用. Java的特点是一处编译到处运行,跨平台.优势是比native语言强,一处编译到处运行.native语言的劣势是不能 ...
- Java根据年度将数据分组
现在有这么一组数据 code name year 45615654 x1 ...
- 如何解决error LNK2001(转载)
转自:http://www.cnblogs.com/myzhijie/articles/1658545.html 解决外部符号错误:_main,_WinMain@16,__beginthreadex ...