且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

ashx文件的使用[转]

更新时间:2022-09-21 21:26:27

原文:http://www.cnblogs.com/jerry0925/articles/901936.html

 

Ashx文件,我们可用用来作图片加载(在之前我们一般使用ASPX或者Webservice去做),一般做法如下:

Handler.ashx:

 

ashx文件的使用[转]
 1ashx文件的使用[转]<%@ WebHandler Language="C#" Class="Handler" %>
 2ashx文件的使用[转]using System;
 3ashx文件的使用[转]using System.IO;
 4ashx文件的使用[转]using System.Web;
 5ashx文件的使用[转]public class Handler : IHttpHandler {
 6ashx文件的使用[转]
 7ashx文件的使用[转]public bool IsReusable {
 8ashx文件的使用[转]  get {
 9ashx文件的使用[转]   return true;
10ashx文件的使用[转]  }

11ashx文件的使用[转]}

12ashx文件的使用[转]public void ProcessRequest (HttpContext context) {
13ashx文件的使用[转]  context.Response.ContentType = "image/jpeg";
14ashx文件的使用[转]  context.Response.Cache.SetCacheability(HttpCacheability.Public);
15ashx文件的使用[转]  context.Response.BufferOutput = false;
16ashx文件的使用[转]  PhotoSize size;
17ashx文件的使用[转]  switch (context.Request.QueryString["Size"]) {
18ashx文件的使用[转]   case "S":
19ashx文件的使用[转]    size = PhotoSize.Small;
20ashx文件的使用[转]    break;
21ashx文件的使用[转]   case "M":
22ashx文件的使用[转]    size = PhotoSize.Medium;
23ashx文件的使用[转]    break;
24ashx文件的使用[转]   case "L":
25ashx文件的使用[转]    size = PhotoSize.Large;
26ashx文件的使用[转]    break;
27ashx文件的使用[转]   default:
28ashx文件的使用[转]    size = PhotoSize.Original;
29ashx文件的使用[转]    break;
30ashx文件的使用[转]  }
 
31ashx文件的使用[转]  Int32 id = -1;
32ashx文件的使用[转]  Stream stream = null;
33ashx文件的使用[转]  if (context.Request.QueryString["PhotoID"!= null && context.Request.QueryString["PhotoID"!= ""{
34ashx文件的使用[转]   id = Convert.ToInt32(context.Request.QueryString["PhotoID"]);
35ashx文件的使用[转]   stream = PhotoManager.GetPhoto(id, size);
36ashx文件的使用[转]  }
 else {
37ashx文件的使用[转]   id = Convert.ToInt32(context.Request.QueryString["AlbumID"]);
38ashx文件的使用[转]   stream = PhotoManager.GetFirstPhoto(id, size);
39ashx文件的使用[转]  }

40ashx文件的使用[转]  if (stream == null) stream = PhotoManager.GetPhoto(size);
41ashx文件的使用[转]  const int buffersize = 1024 * 16;
42ashx文件的使用[转]  byte[] buffer = new byte[buffersize];
43ashx文件的使用[转]  int count = stream.Read(buffer, 0, buffersize);
44ashx文件的使用[转]  while (count > 0{
45ashx文件的使用[转]   context.Response.OutputStream.Write(buffer, 0, count);
46ashx文件的使用[转]   count = stream.Read(buffer, 0, buffersize);
47ashx文件的使用[转]  }

48ashx文件的使用[转]}

49ashx文件的使用[转]}

50ashx文件的使用[转]
51ashx文件的使用[转]
ashx文件的使用[转]

*.aspx:
<img src="myHttpHander.ashx?id=123" width="20" height="20" />


我们变通以下,发现其实除了可以输出图片以外,还可以输出文字:
Handler.ashx:

ashx文件的使用[转]
 1ashx文件的使用[转]<%@ WebHandler Language="C#" Class="Handler" %>
 2ashx文件的使用[转]using System;
 3ashx文件的使用[转]using System.Web;
 4ashx文件的使用[转]public class Handler : IHttpHandler {
 5ashx文件的使用[转]    
 6ashx文件的使用[转]    public void ProcessRequest (HttpContext context) {
 7ashx文件的使用[转]        context.Response.ContentType = "text/plain";
 8ashx文件的使用[转]        context.Response.Write("alert('hi')");
 9ashx文件的使用[转]    }

10ashx文件的使用[转]
11ashx文件的使用[转]    public bool IsReusable {
12ashx文件的使用[转]        get {
13ashx文件的使用[转]            return false;
14ashx文件的使用[转]        }

15ashx文件的使用[转]    }

16ashx文件的使用[转]}

17ashx文件的使用[转]
ashx文件的使用[转]

*.aspx:
弹出alert
<script src="Handler.ashx"></script>
也可以把.ashx当成css文件

<link href="css/Handler.ashx" rel="stylesheet" type="text/css">
xml文件
orderDoc.load("Handler.ashx");


还可以嵌入文字:
Handler.ashx:

ashx文件的使用[转]
 1ashx文件的使用[转]<%@ WebHandler Language="C#" Class="TestHandler" %>
 2ashx文件的使用[转]using System;
 3ashx文件的使用[转]using System.Web;
 4ashx文件的使用[转]public class TestHandler : IHttpHandler {
 5ashx文件的使用[转]    
 6ashx文件的使用[转]    public void ProcessRequest (HttpContext context) {
 7ashx文件的使用[转]        context.Response.ContentType = "text/plain";
 8ashx文件的使用[转]        context.Response.Write("document.write(\"Hello World\");");
 9ashx文件的使用[转]    }

10ashx文件的使用[转]
11ashx文件的使用[转]
12ashx文件的使用[转]
13ashx文件的使用[转]    public bool IsReusable {
14ashx文件的使用[转]        get {
15ashx文件的使用[转]            return false;
16ashx文件的使用[转]        }

17ashx文件的使用[转]    }

18ashx文件的使用[转]}

19ashx文件的使用[转]
20ashx文件的使用[转]
ashx文件的使用[转]

*.aspx:
<script type="text/javascript" src="TestHandler.ashx" />

欢迎加群互相学习,共同进步。QQ群:iOS: 58099570 | Android: 572064792 | Nodejs:329118122 做人要厚道,转载请注明出处!
























本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/sunshine-anycall/archive/2009/07/08/1519022.html,如需转载请自行联系原作者