ashx文件的使用小结
来源:互联网 发布:淘宝金冠女装店铺大全 编辑:程序博客网 时间:2024/05/27 20:06
一提到ashx文件,我们就会想到http handler以及图片加载(在之前我们一般使用ASPX或者Webservice去做),一般做法如下:
Handler.ashx:
代码如下:
<%@ WebHandler Language="C#" Class="Handler" %>using System;using System.IO;using System.Web;public class Handler : IHttpHandler {public bool IsReusable { get { return true; }}public void ProcessRequest (HttpContext context) { context.Response.ContentType = "image/jpeg"; context.Response.Cache.SetCacheability(HttpCacheability.Public); context.Response.BufferOutput = false; PhotoSize size; switch (context.Request.QueryString["Size"]) { case "S": size = PhotoSize.Small; break; case "M": size = PhotoSize.Medium; break; case "L": size = PhotoSize.Large; break; default: size = PhotoSize.Original; break; } Int32 id = -1; Stream stream = null; if (context.Request.QueryString["PhotoID"] != null && context.Request.QueryString["PhotoID"] != "") { id = Convert.ToInt32(context.Request.QueryString["PhotoID"]); stream = PhotoManager.GetPhoto(id, size); } else { id = Convert.ToInt32(context.Request.QueryString["AlbumID"]); stream = PhotoManager.GetFirstPhoto(id, size); } if (stream == null) stream = PhotoManager.GetPhoto(size); const int buffersize = 1024 * 16; byte[] buffer = new byte[buffersize]; int count = stream.Read(buffer, 0, buffersize); while (count > 0) { context.Response.OutputStream.Write(buffer, 0, count); count = stream.Read(buffer, 0, buffersize); }}}
*.aspx:
<img src="myHttpHander.ashx?id=123" width="20" height="20" />
我们变通以下,发现其实除了可以输出图片以外,还可以输出文字:
Handler.ashx:
代码如下:
<%@ WebHandler Language="C#" Class="Handler" %>using System;using System.Web;public class Handler : IHttpHandler { public void ProcessRequest (HttpContext context) { context.Response.ContentType = "text/plain"; context.Response.Write("alert('hi')"); } public bool IsReusable { get { return false; } }}
*.aspx:
弹出alert
也可以把.ashx当成css文件
xml文件
orderDoc.load(“Handler.ashx”);
还可以嵌入文字:
Handler.ashx:
代码如下:
<%@ WebHandler Language="C#" Class="TestHandler" %>using System;using System.Web;public class TestHandler : IHttpHandler { public void ProcessRequest (HttpContext context) { context.Response.ContentType = "text/plain"; context.Response.Write("document.write(\"Hello World\");"); } public bool IsReusable { get { return false; } }}
*.aspx:
using System;using System.Web;using System.Web.SessionState;public class DownloadHandler : IHttpHandler, IReadOnlySessionState{ public bool IsReusable { get { return true; } } public void ProcessRequest(HttpContext ctx) { ctx.Response.Write(ctx.Session["fred"]); }}
其实,学习的思路不应该这样,以上除了图片外,我们都用偏了,为什么用偏了呢,因为软件以简单、实用为主,我们只是把以上纯粹看成可一项技术而没有把它放到软件的地位去考虑:)
具体的用途,大家可以参考Rewirte.dll (这个dll,可以使服务器支持伪静态的)
0 0
- ashx文件的使用小结
- ashx文件的使用
- ashx文件的使用
- ashx文件的使用
- ashx文件的使用实例
- ashx文件的几种使用
- ashx文件使用
- ashx文件使用
- ashx 文件的运用
- ashx 文件的运用
- 创建安全的ashx文件,ashx编译
- 创建安全的ashx文件,ashx编译
- aspx,ascx和ashx使用小结
- aspx,ascx和ashx使用小结
- aspx,ascx 和ashx使用小结
- aspx,ascx和ashx使用小结
- aspx,ascx和ashx使用小结
- aspx,ascx和ashx使用小结
- GCC、Cygwin、MinGW、TDM-GCC
- UTF-8,GBK,Big5,ASCII
- iOS——Xcode 6.1 企业版app发布(In-House模式)详细步骤
- android 强制关闭后台程序方法
- ElasticSearch处理更新冲突
- ashx文件的使用小结
- ROS进阶学习手记 3 -- RViz工具的学习2,Markers: Sending Basic Shapes
- 8大你不得不知的Android调试工具
- The Child and Toy
- 如何手动删除不需要的windows服务
- ANDROID L——Material Design综合应用(Demo) .
- Reverse Linked List II
- 为什么我一直不懈的养着这个博客但是还审核
- jump game II