您的位置:首页 > 其它

ashx是什么文件,如何创建

2009-02-09 23:42 337 查看
.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 

<%@ WebHandler Language="C#" Class="ImageHandler" %>

using System;

using System.Web;

/// <summary>

/// 这就一个没有任何实现的一般处理程序。

/// </summary>

public class ImageHandler : IHttpHandler {

    

    public void ProcessRequest (HttpContext context)

    {

        //获取虚拟目录的物理路径。 

        string path = context.Server.MapPath("");

        //获取图片文件的二进制数据。

        byte[] datas = System.IO.File.ReadAllBytes(path + "\\U1513.jpg");

       //将二进制数据写入到输出流中。

        context.Response.OutputStream.Write(datas, 0, datas.Length);

    }

 

    public bool IsReusable {

        get {

            return false;

        }

    }

}

default.aspx文件

注意上面的代码:<asp:Image ID="Image1" runat="server"  ImageUrl="~/ImageHandler.ashx"/></div> 中ImageUrl指向的是ImageHandler.ashx文件。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: