天天看点

ashx是什么文件,如何创建[转]

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文件处输入以下代码(名称空间略): 

ashx是什么文件,如何创建[转]

using system.web 

ashx是什么文件,如何创建[转]

public sealed class textbuilder : ihttphandler 

ashx是什么文件,如何创建[转]
ashx是什么文件,如何创建[转]

    public void processrequest(httpcontext context) 

ashx是什么文件,如何创建[转]

    { 

ashx是什么文件,如何创建[转]

        context.response.clearcontent(); 

ashx是什么文件,如何创建[转]

        context.response.contenttype = "text/plain"; 

ashx是什么文件,如何创建[转]

        context.response.write("hello world"); 

ashx是什么文件,如何创建[转]

        context.response.end(); 

ashx是什么文件,如何创建[转]

    } 

ashx是什么文件,如何创建[转]
ashx是什么文件,如何创建[转]

    public bool isreusable 

ashx是什么文件,如何创建[转]
ashx是什么文件,如何创建[转]

        get { return true; } 

ashx是什么文件,如何创建[转]
ashx是什么文件,如何创建[转]

然后在“textbuilder.ashx”文件的第一行处输入上面这个类的调用代码: 

ashx是什么文件,如何创建[转]

<%@ webhandler language="c#" class="mynamespace.textbuilder" codebehind="textbuilder.ashx.cs" %>

上面的代码需要注意的是:必须在class项中输入类的完整名称,即包括名称空间及类名称。 

最后保存并编译项目。 

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

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

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

欢迎加群互相学习,共同进步。qq群:ios: 58099570 | android: 330987132 | go:217696290 | python:336880185 | 做人要厚道,转载请注明出处!http://www.cnblogs.com/sunshine-anycall/archive/2009/07/08/1519020.html