`

使用.ashx文件处理IHttpHandler实现发送文本及二进制数据的方法

    博客分类:
  • C#
阅读更多
最近在做我们单位的内部一个系统,使用了类似于Asp.Net 2.0里面的Theme(主题)的功能。此功能的核心是一个动态的CSS定义,根据用户选择的不同主题内容来发送不同的CSS样式文本。
本来这个问题很好解决,在HTML中的<head>区内使用一个:
<%#= base.GetCssInclude() %> 就可以解决,不过我没有用这个办法。

我注意了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 高效分页实现代码

    但是学了Jquery之后,了解了 Jquery.ajax ,Jquery.get 等方法,从而学会了使用 webservice 和.ashx 文件,来与服务器交互。 这次的Jquery分页 是与 .ashx文件配合的。 建立三个.ashx,分别为PreviewHandler.ashx,...

    ashx是什么文件,如何创建.pdf

    例如,在生成统计图表时,可以使用 DundasChart 控件在 ashx 文件中输出二进制数据流,方便快捷且不需要在 web.config 中输入任何配置代码。 创建 ashx 文件的步骤如下: 1. 打开一个 Web 项目,然后在任意目录下...

    ASP.NET中使用一般处理程序ashx作为后台处理实现响应get和post请求示例代码.zip

    本示例代码着重展示了如何使用ASHX来处理GET和POST请求,这在构建RESTful API或实现异步数据通信时非常常见。 首先,让我们了解GET和POST请求的基本概念。GET请求通常用于获取资源,是幂等的,意味着多次发送相同的...

    arcgis proxy.ashx,proxy.config

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

    CEMS:Menu.ashx.cs文件

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

    CEMS:DefaultMain.ashx.cs文件

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

    OpenFile.ashx

    OpenFile.ashx

    ASP.NET DataList 绑定数据库二进制图片

    // 假设GetImageDataFromDatabase方法已实现,从数据库获取指定ID的图片二进制数据 private byte[] GetImageDataFromDatabase(int imageId) { // ... } public bool IsReusable =&gt; false; } ``` 至此,我们...

    C# ashx接口实现 实例

    本文将深入探讨如何使用C#来实现ASHX接口,并结合提供的文件目录结构进行实例解析。 首先,`JieKou`文件夹中的内容很可能是服务器端的接口实现。ASHX接口是基于.NET Framework的HTTP服务组件,它不需要完整的ASP...

    二进制流形式上传图片,然后前台显示图片示例(vs2005+sql2005)

    在IT领域,尤其是在Web开发中,将图片以二进制流的形式存储在数据库中是一种常见的做法,这在处理大量图像数据或需要高效访问时尤其有用。本示例以Visual Studio 2005 (VS2005) 和 SQL Server 2005 (SQL2005) 为开发...

    ArcGis代理.Net版本proxy.ashx

    《ArcGIS代理.Net版本proxy.ashx详解及应用》 ArcGIS代理(ArcGIS Proxy)是一种重要的GIS(地理信息系统)技术,它在.NET环境中实现,主要用于处理跨域访问限制问题,尤其是在ArcGIS服务与Web应用程序交互时。标题...

    FileUpload.ashx_C#_fileupload_

    在.NET开发环境中,C#是一...同时,由于`FileUpload.ashx.cs`文件名的出现,我们可以推断这是一个.CS文件,这意味着具体的处理逻辑被封装在一个类中,该类实现了IHttpHandler接口,这是.NET中处理HTTP请求的标准方式。

    ajax+jquery+ashx实现上传文件

    在ASP.NET环境中,我们需要在Global.asax.cs文件中注册HttpHandler,然后创建一个名为UploadHandler.ashx.cs的类来处理请求: ```csharp // 在Global.asax.cs中注册HttpHandler public class Global : System.Web....

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

    综上所述,解决jquery向.ashx文件post中文乱码问题的核心在于确保前端发送的数据编码与服务器端接收和处理数据的编码一致。具体操作时,开发者应当检查并测试所有相关的配置和编码方式,确保它们匹配无误。此外,还...

    【ASP.NET编程知识】ashx介绍以及ashx文件与aspx文件之间的区别.docx

    ASP.NET ashx 文件介绍及 ashx 文件与 aspx 文件之间的区别 Ashx 文件是一个特殊的文件类型,在 ASP.NET 中用于处理 Web 处理程序(HttpHandler)。它与 aspx 文件类似,但 ashx 文件不需要控件解析和页面处理过程...

    异步请求分页示例:handler.ashx + $.ajax() + Json + 分页处理

    这个示例结合了`handler.ashx`处理程序、`$.ajax()`方法、JSON数据格式以及前端分页处理,构建了一个高效的分页系统。下面我们将详细探讨这些知识点。 首先,`handler.ashx`是一种基于ASP.NET的HTTP Handler,它...

    getJson+ashx实现数据交互(入门级)

    在本文中,我们将深入探讨如何使用`getJSON`和`.ashx`处理数据交互,特别关注C#环境下的实现。`getJSON`是jQuery库中一个非常实用的函数,用于异步获取JSON格式的数据,而`.ashx`是ASP.NET中处理HTTP请求的自定义...

    【ASP.NET编程知识】ASP.NET百度Ueditor编辑器实现上传图片添加水印效果.docx

    * ASP.NET中实现图片上传和水印处理的方法有多种,可以使用继承IHttpHandler接口实现图片上传和水印处理。 本文档介绍了如何在ASP.NET中使用Ueditor编辑器实现上传图片添加水印效果的方法,并对图片处理和水印处理...

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

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

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

    .ashx文件适合产生供浏览器处理的、不需要回发处理的数据格式,例如用于生成动态图片、动态文本等内容。 ashx文件是.net 2.0新加的文件类型(其实在.net 1.0下已经可用,但是没有公开提供). ashx文件和aspx文件有什么...

Global site tag (gtag.js) - Google Analytics