`
bulote
  • 浏览: 1310360 次
文章分类
社区版块
存档分类
最新评论

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

相关推荐

    Jquery Ajax.ashx 高效分页实现代码

    以前的我,用惯了 UpdatePanel UpdateProgress 等控件,甚至到了滥用的程度,... 这次的Jquery分页 是与 .ashx文件配合的。 建立三个.ashx,分别为PreviewHandler.ashx,PageHandler.ashx,NextHandler.ashx,分别来处

    【ASP.NET编程知识】.ashx文件不能访问Session值的解决方法.docx

    【ASP.NET编程知识】.ashx文件不能访问Session值的解决方法.docx

    CEMS:Menu.ashx.cs文件

    CEMS:Menu.ashx.cs文件,在系統的ASAX下!!!!!!!!!!!!!!!!!!

    CEMS:DefaultMain.ashx.cs文件

    CEMS:DefaultMain.ashx.cs!!!!!!!!!!!!!!!!!!!!!!

    arcgis proxy.ashx,proxy.config

    arcgis for javascript api所需要的配置文件,能解决跨域访问的问题,我在proxy....包含两个文件proxy.ashx,proxy.config两个文件,上次下载一个说是有两个文件,其实里面只有一个,有被骗了的感觉,所以这次上传上来

    CEMS:GetLeftMenu.ashx.cs文件

    CEMS:GetLeftMenu.ashx.cs文件,在系統的ASAX下!!!!!!!!!!!!!

    *.ashx文件不能访问Session值的解决方法

    主要介绍了*.ashx文件不能访问Session值的解决方法,只需在头部引用一个命名空间即可解决问题,非常实用,需要的朋友可以参考下

    .ashx借用注意事项

    本文档详细叙述了在web应用开发时,从一个web应用中,借用另一个web应用中的 .ashx文件发生的奇怪问题和解决办法。

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

    .ashx文件与.aspx文件类似,可以通过它来调用HttpHandler类,它免去了普通.aspx页面的控件解析以及页面处理的过程。其实就是带HTML和C#的混合文件。 .ashx文件适合产生供浏览器处理的、不需要回发处理的数据格式,...

    proxy.jsp、proxy.ashx、proxy.php、proxy.config

    esri.config.defaults.io.proxyUrl is not set所缺文件 proxy.jsp、proxy.ashx、proxy.php、proxy.config

    C# 微信公众平台开发.NET源码

    微信公众号开发.NET源码亲测可用,修改Web.config文件的值"/&gt; 值"/&gt;和interfaceTest.ashx文件的const string token = "token值";然后发布放到服务器上,微信公众测试号上输入服务器URL(http://***/interfaceTest....

    jquery向.ashx文件post中文乱码问题的解决方法

    jquery向.ashx文件post中文乱码问题的解决方法,需要的朋友可以参考下。

    在.ashx文件中获取cookies值实现代码

    .ashx文件中获取cookies值对于一些高手们就不多说了,至于一些小白们还是有必要多多学习啊,好了话不多说,看代码,感兴趣的你可不要错过了哈

    Cron表达式生成器

    Cron表达式生成器 通过这个生成器,您可以在线生成任务调度比如Quartz的Cron表达式,对Quartz Cron 表达式的可视化双向解析和生成

    FileUpload.ashx_C#_fileupload_

    C#语言的文件上传参考,里面还有制作缩略图的函数。

    Asp.Net 一般处理程序.pdf

    ashx:.ashx文件是主要用来写web handler的。使用.ashx 可以让你专注于编程而不用管相关的web技术。我们熟知的.aspx是要做html控件树解析的,.aspx包含的所有html实际上是一个类,所有的html都是类里面的成员,这个...

    Asp.net+jquery+.ashx文件实现分页思路

    分页思路: .ashx程序中,编写好取得不同页码的程序。在页面布局好的前提下,留下数据区域 div。然后在页面请求 .ashx程序生成下一页的html代码。覆盖div.innerHTMl

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

    解决方案:使用ashx文件。 1. 使用ASHX handlers 首先,我们要回顾要使用ASHX文件的目标,我们要做的是在一个地址中用ASHX文件并动态的返回内容。 我们将用到querystring,最后的地址格式为(例子): ...

Global site tag (gtag.js) - Google Analytics