.ashx 文件

.ashx 文件用于写web handler的。其实就是带HTML和C#的混合文件。当然你完全可以用.aspx 的文件后缀。使用.ashx 可以让你专注于编程而不用管相关的WEB技术。.ashx必须包含IsReusable. 如下例所示

<% @ webhandler language="C#" class="AverageHandler" %>

using System;
using System.Web;

public class AverageHandler : IHttpHandler
{
public bool IsReusable
{ get { return true; } }
public void ProcessRequest(HttpContext ctx)
{
ctx.Response.Write("hello");
}
}
.ashx比.aspx的好处在与不用多一个html   
注意了VS2005中Web应用程序项目模板里的Generic Handler 项,发现它是一个.ashx文件,实际上它是一个HttpHandler。后来查了一下.Net SDK文档,发现Asp.Net1.1也支持.ashx,但是没有给出详细内容。 

我们都知道,HttpHandler是一个彻底自定义Http请求的方法,它通过web.config来定义Asp.Net运行时来过滤出要自定义的Http请求,发送到定义在web.config的指定类中。 

利用.ashx文件是一个更好的方法,这个文件类似于.aspx文件,可以通过它来调用HttpHandler类,从而免去了普通.aspx页面的控件解析以及页面处理的过程。这个文件特别适合于生成动态图片,生成动态文本等内容。 

建立方法如下: 
首先打开一个Web项目,然后在任意目录下使用VS2003解决方案资源管理器的“添加”-->“添加新项”,在对话框中选择“文本文件”,然后在文件名处输入“TextBuilder.ashx”。 

然后在同目录下,使用解决方案资源管理器,使用“添加”-->“添加类”,在类文件名处输入“TextBuilder.ashx.cs”。可以看出,它的文件命名规律与.aspx文件相同。 

然后在.cs文件处输入以下代码(名称空间略):
using System.Web
public sealed class TextBuilder : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
     {
        context.Response.ClearContent();
        context.Response.ContentType = "text/plain";
        context.Response.Write("Hello World");
        context.Response.End();
    }

    public bool IsReusable
     {
        get  { return true; }
    }
}

然后在“TextBuilder.ashx”文件的第一行处输入上面这个类的调用代码:
<% @ WebHandler language="C#" Class="MyNamespace.TextBuilder" codebehind="TextBuilder.ashx.cs" %>
上面的代码需要注意的是:必须在Class项中输入类的完整名称,即包括名称空间及类名称。 

最后保存并编译项目。 

使用IE测试,输入这个.ashx的地址即可。 

大家可以看出Response类有个OutputStream方法,可以向客户端输出二进制数据流,所以在我的项目中,使用这个方法,在一个.ashx中使用DundasChart控件就可以生成非常好的统计图,用它发送二进制数据,方便快捷,而且不需在web.config内输入任何配置代码。 

.ashx文件有个缺点,他处理控件的回发事件非常麻烦,比如说如果用它来生成DataGrid的列表也不是不行,但是处理数据的回发,需要一些.aspx页的功能,只有自己手动处理这些功能。所以,一般使用.ashx,用来输出一些不需要回发处理的项目即可。 

时间: 2025-01-02 02:22:20

.ashx 文件的相关文章

使用ashx文件生成验证码图片

 在vs2005中可以直接创建.ashx文件,其项目叫做一般处理程序,.ashx文件一般用来处理只有返回,二一般不回传的数据,比如动态生成图片,或者文字,以下为清清月儿博客上转载的一个用ashx动态生成验证码图片的代码. //绘制验证码图片ValidateImageHandler.ashx 1 <%@ WebHandler Language="C#" Class="ValidateImageHandler" %> 2  3 using System; 4

ASP.NET教程:使用.ashx文件去除重复内容

不同的链接指向的页面如果具有大量相同的内容,这种现象就会被称为"重复内容",如果一个网站的重复内容很多,搜索引擎就会认为这个网站的价值不高.所以我们应尽量避免各种重复内容. 动态网站的重复内容常常是由URL参数引起的,而URL重写会恶化这一现象(比较耐人寻味哟,呵呵).因为如果使用的是原始的URL参数的话,搜索引擎可能会进行适当的判断,而得知重复内容是由URL参数引起的,自动的进行相应的处理:而URL重写会掩盖URL参数,反而使得搜索引擎无法识别URL参数.比如: 原始的URL:htt

ashx介绍以及ashx文件与aspx文件之间的区别

 这篇文章主要介绍了ashx以及ashx文件与aspx文件之间的区别.需要的朋友可以过来参考下,希望对大家有所帮助 ashx是什么文件?   .ashx 文件用于写web handler的..ashx文件与.aspx文件类似,可以通过它来调用HttpHandler类,它免去了普通.aspx页面的控件解析以及页面处理的过程.其实就是带HTML和C#的混合文件.    .ashx文件适合产生供浏览器处理的.不需要回发处理的数据格式,例如用于生成动态图片.动态文本等内容.    ashx文件是.net

ashx文件的使用小结

 这篇文章主要是对ashx文件的使用进行了介绍.需要的朋友可以过来参考下,希望对大家有所帮助 一提到Ashx文件,我们就会想到http handler以及图片加载(在之前我们一般使用ASPX或者Webservice去做),一般做法如下:   Handler.ashx:   代码如下: <%@ WebHandler Language="C#" Class="Handler" %> using System; using System.IO; using S

新人求解答—Jquery怎么得到从ashx文件传过来的Json字符串里面的二进制数据!!

问题描述 新人求解答-Jquery怎么得到从ashx文件传过来的Json字符串里面的二进制数据!! 解决方案 <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.4.2.min.js"></script> <script> $.ajax({ url: 'xxxxx.ashx', dataType: 'json', success: function (json) { console.

使用.ashx文件尽量避免各种重复内容

摘要: 不同的链接指向的页面如果具有大量相同的内容,这种现象就会被称为重复内容,如果一个网站的重复内容很多,搜索引擎就会认为这个网站的价值不高.所以我们应尽量避免各种重复 不同的链接指向的页面如果具有大量相同的内容,这种现象就会被称为"重复内容",如果一个网站的重复内容很多,搜索引擎就会认为这个网站的价值不高.所以我们应尽量避免各种重复内容. 动态网站的重复内容常常是由URL参数引起的,而URL重写会恶化这一现象(比较耐人寻味哟,呵呵).因为如果使用的是原始的URL参数的话,搜索引擎可

ashx文件的使用[转]

原文:http://www.cnblogs.com/jerry0925/articles/901936.html   Ashx文件,我们可用用来作图片加载(在之前我们一般使用ASPX或者Webservice去做),一般做法如下: Handler.ashx:    1<%@ WebHandler Language="C#" Class="Handler" %> 2using System; 3using System.IO; 4using System.W

.net网站中,ashx文件本地运行没问题,发布到服务器就找不到文件中引用的外部类了~

问题描述 解决方案 解决方案二:你看一下你的ashx文件的Inherits字段解决方案三:编译发布之后,把bin目录完整上传解决方案四:你这个Handler看着像是一个自定义的委托,相关dll缺失吧解决方案五:引用3楼starfd的回复: 你这个Handler看着像是一个自定义的委托,相关dll缺失吧 dll是有滴~~解决方案六:引用1楼lkhuge的回复: 你看一下你的ashx文件的Inherits字段 ashx文件支持Inherits吗?没有Inherits呢...解决方案七:这个是百度ue

ashx 文件里怎么写代码读取数据库里的WORD等文件并显示呢?

问题描述 ashx文件里怎么写代码读取数据库里的WORD等文件并显示呢?能举个简单的例子?谢谢 解决方案 解决方案二:和普通的cs文件一樣處理解决方案三:我用.NET1.0时的代码写,但没办法显示