当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > asp.net *.ashx类型的文件使用说明

ASP.NET
ASP.NET开发:简化应用程序的开发支持Web标准
asp.net XMLHttpRequest实现用户注册前的验证
asp.net 页面间传值方法小结
asp.net url重写浅谈
asp.net 验证码生成和刷新及验证
C#精髓 GridView72大绝技 学习gridview的朋友必看
实例说明asp.net中的简单角色权限控制
asp.net网站开发包wq.dll打包下载
js与ASP.NET 中文乱码问题
asp.net checkbox 动态绑定id GridView删除提示
asp.net TextBox回车触发事件 图片在img显示
asp.net 脏字典过滤问题 用正则表达式来过滤脏数据
asp.NET 脏字过滤算法
asp.NET 脏字过滤算法 修改版
asp.net sql 数据库处理函数命令
asp.net Javascript 的几种写法与提示
ASP.NET MVC学习笔记
asp.net 中国身份证号码验证代码 非正则
Asp.net中使用Sqlite数据库的方法
asp.net 中文字符串提交乱码的解决方法

ASP.NET 中的 asp.net *.ashx类型的文件使用说明


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-01-10   浏览: 225 ::
收藏到网摘: n/a

你想创建一个ASP.NET文件,它不是aspx文件,它能动态的返回一个图片、XML文件或其他非HTML文件。 解决方案:使用ashx文件。
1. 使用ASHX handlers
首先,我们要回顾要使用ASHX文件的目标,我们要做的是在一个地址中用ASHX文件并动态的返回内容。
我们将用到querystring,最后的地址格式为(例子):
http://dotnetperls.com/?file=name
开始:通过这几个步骤你可以添加一个新的ashx文件:打开你的ASP.NET web site;右击项目选择
“Add New Item...”;将显示一个“Add New Item”的对话框,选择“Generic Handler”。此时,你就
会得到一个新的ashx文件。
2.自动生成代码
我们需要注意的是在ashx文件中自动生成的代码。它定义了IHttpHandler接口的两部分。非常重要的一
部分是ProcessRequest(),它将决定这个ashx文件是被请求还是被显示。你不能修改这个继承的接口或删
除它的方法。
3.映射handler
映射一个older URL或一个路径到你的新ashx文件通常是可取的。为了向后兼容和优化搜索引擎,你获取
希望这个handler能接管一个old URL。如何来实现呢?用urlMappings;
复制代码 代码如下:

<system.web>
<urlMappings enabled="true">
<add url="~/Default.aspx" mappedUrl="~/Handler.ashx"/>
</urlMappings>

URL mappings:上面的web.config配置将自动连接一个URL到另一个URL。现在,当Default.aspx被请求时
,你的ashx文件将接管。这个意思就是说,你能映射Default.aspx到你的handler。
4.添加一个图片
在这里,我们谈论到了你用ashx文件能做什么。找一个你喜欢的图片。把它添加到你的网站项目中。例如
,我选择了一个图片“Flower1.png”。下面,我们将在ashx文件中用到这个图片。
5.修改ashx文件
你的ashx文件中有两部分,在这里,我们必须修改ProcessRequest()方法。我们能改变这个文件的
ContentType和Response内容。按照下面的方法修改你的ashx文件。
~~~ ASHX code-behind file (C#) ~~~
复制代码 代码如下:

using System;
using System.Web;
public class Handler : IHttpHandler {
public void ProcessRequest (HttpContext context) {
// Comment out these lines first:
// context.Response.ContentType = "text/plain";
// context.Response.Write("Hello World");
context.Response.ContentType = "image/png";
context.Response.WriteFile("~/Flower1.png");
}
public bool IsReusable {
get {
return false;
}
}
}