.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,用来输出一些不需要回发处理的项目即可。 
目录
相关文章
|
8月前
|
监控 搜索推荐 API
京东JD商品详情原数据API接口的开发、运用与收益
京东商品详情API接口是京东开放平台的重要组成部分,通过程序化方式向第三方提供商品详细信息,涵盖名称、价格、库存等。它促进了京东生态系统的建设,提升了数据利用效率,并推动了企业和商家的数字化转型。开发者可通过注册账号、获取密钥、调用接口并解析返回结果来使用该API。应用场景包括电商平台的价格监控、竞品分析、个性化推荐系统开发、移动应用开发及数据整合与共享等。该接口不仅为企业和开发者带来商业价值提升、用户体验优化,还助力数据资产积累,未来应用前景广阔。
423 9
|
计算机视觉
中文字符串时出现乱码
【6月更文挑战第3天】
302 4
|
芯片
I/O口接口扩展----82C55
I/O口接口扩展----82C55
607 1
|
新零售 运维 Prometheus
带你读《云原生架构白皮书2022新版》——加速 SaaS 规模化演进,餐道基于 K8s 的云上创新底座(下)
带你读《云原生架构白皮书2022新版》——加速 SaaS 规模化演进,餐道基于 K8s 的云上创新底座(下)
880 97
|
存储
【头歌·计组·自己动手画CPU】四、控制器设计(理论版) 【计算机硬件系统设计】
【头歌·计组·自己动手画CPU】四、控制器设计(理论版) 【计算机硬件系统设计】
872 0
|
前端开发 JavaScript API
Tailwind CSS:快速打造美观网页的秘密武器
Tailwind CSS:快速打造美观网页的秘密武器
|
存储 程序员 编译器
Python语言基本语法元素
Python语言采用严格的缩进来表示程序逻辑。也就是我们所说的Python程序间的包含与层次关系。一般代码不要求缩进,顶行编写且不留空白。在if、while、for、def、class等保留字所在完整语句后通过英文的“:”结尾并在之后行进行缩进,表明后续代码与紧邻无缩进语句的所属关系。
523 0
Python语言基本语法元素
数学符号ln
ln在数学里表示的是以常数e(无理数,约等于2.71828...)为底的自然对数符号。即lnm=loge(m)其中,log (英语名词:logarithms)表示的是对数运算。当a^b=n时,也可表示为log(a)(n)=b。
3645 0
|
算法 Java BI
IP 转换_IP2Region | 学习笔记
快速学习IP 转换_IP2Region
1013 0
IP 转换_IP2Region | 学习笔记
|
存储 Web App开发 Android开发
高智商学生如何玩转无影云电脑
作为一名刚学习编程技术的学生来说,非常有幸体验阿里的无影云电脑,非常的荣幸,也感谢阿里云的支持与帮助,本人将写一遍无影云电脑评测的文章来记录一下这一令人感动的瞬间。
1795 0