最近在做我们单位的内部一个系统,使用了类似于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之后,了解了 Jquery.ajax ,Jquery.get 等方法,从而学会了使用 webservice 和.ashx 文件,来与服务器交互。 这次的Jquery分页 是与 .ashx文件配合的。 建立三个.ashx,分别为PreviewHandler.ashx,...
CEMS:Menu.ashx.cs文件,在系統的ASAX下!!!!!!!!!!!!!!!!!!
CEMS:DefaultMain.ashx.cs!!!!!!!!!!!!!!!!!!!!!!
OpenFile.ashx
arcgis for javascript api所需要的配置文件,能解决跨域访问的问题,我在proxy....包含两个文件proxy.ashx,proxy.config两个文件,上次下载一个说是有两个文件,其实里面只有一个,有被骗了的感觉,所以这次上传上来
【ASP.NET编程知识】.ashx文件不能访问Session值的解决方法.docx
CEMS:GetLeftMenu.ashx.cs文件,在系統的ASAX下!!!!!!!!!!!!!
esri.config.defaults.io.proxyUrl is not set所缺文件 proxy.jsp、proxy.ashx、proxy.php、proxy.config
.ashx文件适合产生供浏览器处理的、不需要回发处理的数据格式,例如用于生成动态图片、动态文本等内容。 ashx文件是.net 2.0新加的文件类型(其实在.net 1.0下已经可用,但是没有公开提供). ashx文件和aspx文件有什么...
upload_ajax.ashx用于图片上传初始化,webuploader,kindeditor等
ASP.NET中使用一般处理程序ashx作为后台处理实现响应get和post请求示例代码.zip
本文档详细叙述了在web应用开发时,从一个web应用中,借用另一个web应用中的 .ashx文件发生的奇怪问题和解决办法。
主要介绍了*.ashx文件不能访问Session值的解决方法,只需在头部引用一个命名空间即可解决问题,非常实用,需要的朋友可以参考下
异步请求分页示例:handler.ashx + $.ajax() + Json + 前端分页处理
解决方案:使用ashx文件。 1. 使用ASHX handlers 首先,我们要回顾要使用ASHX文件的目标,我们要做的是在一个地址中用ASHX文件并动态的返回内容。 我们将用到querystring,最后的地址格式为(例子): ...
基于深度置信网络脑电信号医学数据处理算法优化研究.ashx
基于MatlabGUI的李萨如图形实现方法的研究.ashx
客户端使用uploadify插件进行上传文件、图片。服务端使用c#进行开发设计,使用ashx一般处理程序来接收文件。
C#语言的文件上传参考,里面还有制作缩略图的函数。
1. acgis 代理的.net版本 2. 1.0的可用版本,如果要最新的包里有地址。 3. 可以动态获取token,并且追加到服务地址上。