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,用来输出一些不需要回发处理的项目即可。 

 

转自 http://www.cnblogs.com/lin614/archive/2008/01/18/1044734.html 

时间: 2024-08-01 23:00:09

ashx是什么文件,如何创建的相关文章

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

原文地址:http://www.cnblogs.com/lin614/archive/2008/01/18/1044734.html   ashx是什么文件,如何创建 .ashx 文件用于写web handler的.其实就是带HTML和C#的混合文件.当然你完全可以用.aspx 的文件后缀.使用.ashx 可以让你专注于编程而不用管相关的WEB技术..ashx必须包含IsReusable. 如下例所示 <% @ webhandler language="C#" class=&qu

open-VS 调试运行无法创建文件,直接在debug目录运行源程序时文件正常创建,是怎么回事?

问题描述 VS 调试运行无法创建文件,直接在debug目录运行源程序时文件正常创建,是怎么回事? VS 调试运行无法创建文件,直接在debug目录运行源程序时文件正常创建,是怎么回事? 我该了管理员权限运行VS 然后调试运行 文件还是没有创建,我跟踪了open()函数的返回值 为1 正确的,表明函数调用成功,可是我在debug目录下并没有发现文件啊? 是怎么回事? 解决方案 检查下你创建文件的相对路径是什么.如果你直接给文件名,那么调试的时候试图在program files下创建文件,这是不允许

用字典的write方法写数据,plist文件的创建失败

问题描述 用字典的write方法写数据,plist文件的创建失败 我有一个字典,字典数据是从网上get过来的 我用字典自带的write方法写数据进plist时候,plist文件不创建,路径没问题,请问是有什么其他原因么 解决方案 http://www.xuebuyuan.com/2066987.html

php学习笔记--高级教程--读取文件、创建文件、写入文件

打开文件:fopen:fopen(filename,mode);//fopen("test.txt","r"): 打开模式:r 只读方式打开,将文件指针指向文件头 r+ 读写方式打开,将文件指针指向文件头 w 写入方式,指向文件头,如果不存在则尝试创建 w+ 读写方式,指向文件头,如果不存在则尝试创建 a 写入方式打开,指向文件末尾,如果不存在则尝试创建 a+ 读写方式打开,指向文件末尾,如果不存在则尝试创建 读取文件:fread:fread(); readfile

Oracle密码文件的创建、使用和维护

oracle|创建 在Oracle数据库系统中,用户如果要以特权用户身份(INTERNAL/SYSDBA/SYSOPER)登录Oracle数据库可以有两种身份验证的方法:即使用与操作系统集成的身份验证或使用Oracle数据库的密码文件进行身份验证.因此,管理好密码文件,对于控制授权用户从远端或本机登录Oracle数据库系统,执行数据库管理工作,具有重要的意义. Oracle数据库的密码文件存放有超级用户INTERNAL/SYS的口令及其他特权用户的用户名/口令,它一般存放在ORACLE_HOME

如何获得Windows 8.1 ISO文件和创建一个U盘启动盘

上周早些时候,微软在10月18号正式推出Windows 8.1更新,而Windows 8用户更是在17号晚间7点(北京时间)通过应用商店下载更新到新系统.但你也许也想要Windows 8.1的ISO文件和创建一个U盘启动盘方便日后安装.现在,我们这里有个小技巧可以让你做到这点. 说起来这个小技巧还是比较简单的,详情看下文,它允许你在不用安装Windows 8的情况下创建一个Windows 8.1的U盘启动盘,具体步骤如下: 首先,你先点开这个链接http://windows.microsoft.

c#文件的创建、读取及写入

在c#中运用到操作流时,首先要加入以下两个命名空间 using System.IO; using System.Collections; 我总结了以下几种方式来进行IO操作,很简便,但却很实用 目录的创建 文件的创建 文件读取与写入 文件的按逐行读取 以上代码虽然很简洁,但是在实际操作中使用起来可是很方便的,这只是我自己工作中总结的 ,大家可以去试下,使用它可以用最少的代码实现自己想要的效果.

asp.net服务器端获取客户端文件的创建时间

问题描述 asp.net服务器端获取客户端文件的创建时间 asp.net系统客户端批量上传文件,怎么在服务器端获取客户端的这些文件的创建时间!

mac-在Mac下用fopen()+文件名为什么不能在源文件所在文件夹创建文件?

问题描述 在Mac下用fopen()+文件名为什么不能在源文件所在文件夹创建文件? 如 FILE *fp; fp = fopen("test","w"); 解决方案 会在你运行可执行文件的目录创建 解决方案二: 相对路径是相对当前的工作路径的,如果你的工作路径不在源代码的文件夹,那么创建文件当然也不在.