博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ashx文件的使用[转]
阅读量:6234 次
发布时间:2019-06-22

本文共 2626 字,大约阅读时间需要 8 分钟。

原文:

 

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

Handler.ashx:

 

 1
<%
@ WebHandler Language
=
"
C#
"
 Class
=
"
Handler
"
 
%>
 2
using
 System;
 3
using
 System.IO;
 4
using
 System.Web;
 5
ExpandedBlockStart.gifContractedBlock.gif
public
 
class
 Handler : IHttpHandler 
{
 6
 7ExpandedSubBlockStart.gifContractedSubBlock.gifpublic bool IsReusable {
 8ExpandedSubBlockStart.gifContractedSubBlock.gif  get {
 9   return true;
10  }
11}
12ExpandedSubBlockStart.gifContractedSubBlock.gifpublic void ProcessRequest (HttpContext context) {
13  context.Response.ContentType = "image/jpeg";
14  context.Response.Cache.SetCacheability(HttpCacheability.Public);
15  context.Response.BufferOutput = false;
16  PhotoSize size;
17ExpandedSubBlockStart.gifContractedSubBlock.gif  switch (context.Request.QueryString["Size"]) {
18   case "S":
19    size = PhotoSize.Small;
20    break;
21   case "M":
22    size = PhotoSize.Medium;
23    break;
24   case "L":
25    size = PhotoSize.Large;
26    break;
27   default:
28    size = PhotoSize.Original;
29    break;
30  }
 
31  Int32 id = -1;
32  Stream stream = null;
33ExpandedSubBlockStart.gifContractedSubBlock.gif  if (context.Request.QueryString["PhotoID"!= null && context.Request.QueryString["PhotoID"!= ""{
34   id = Convert.ToInt32(context.Request.QueryString["PhotoID"]);
35   stream = PhotoManager.GetPhoto(id, size);
36ExpandedSubBlockStart.gifContractedSubBlock.gif  }
 else {
37   id = Convert.ToInt32(context.Request.QueryString["AlbumID"]);
38   stream = PhotoManager.GetFirstPhoto(id, size);
39  }
40  if (stream == null) stream = PhotoManager.GetPhoto(size);
41  const int buffersize = 1024 * 16;
42  byte[] buffer = new byte[buffersize];
43  int count = stream.Read(buffer, 0, buffersize);
44ExpandedSubBlockStart.gifContractedSubBlock.gif  while (count > 0{
45   context.Response.OutputStream.Write(buffer, 0, count);
46   count = stream.Read(buffer, 0, buffersize);
47  }
48}
49}
50
51

*.aspx:

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

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

Handler.ashx:

 1
<%
@ WebHandler Language
=
"
C#
"
 Class
=
"
Handler
"
 
%>
 2
using
 System;
 3
using
 System.Web;
 4
ExpandedBlockStart.gifContractedBlock.gif
public
 
class
 Handler : IHttpHandler 
{
 5    
 6ExpandedSubBlockStart.gifContractedSubBlock.gif    public void ProcessRequest (HttpContext context) {
 7        context.Response.ContentType = "text/plain";
 8        context.Response.Write("alert('hi')");
 9    }
10
11ExpandedSubBlockStart.gifContractedSubBlock.gif    public bool IsReusable {
12ExpandedSubBlockStart.gifContractedSubBlock.gif        get {
13            return false;
14        }
15    }
16}
17

*.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:

 1
<%
@ WebHandler Language
=
"
C#
"
 Class
=
"
TestHandler
"
 
%>
 2
using
 System;
 3
using
 System.Web;
 4
ExpandedBlockStart.gifContractedBlock.gif
public
 
class
 TestHandler : IHttpHandler 
{
 5    
 6ExpandedSubBlockStart.gifContractedSubBlock.gif    public void ProcessRequest (HttpContext context) {
 7        context.Response.ContentType = "text/plain";
 8        context.Response.Write("document.write(\"Hello World\");");
 9    }
10
11
12
13ExpandedSubBlockStart.gifContractedSubBlock.gif    public bool IsReusable {
14ExpandedSubBlockStart.gifContractedSubBlock.gif        get {
15            return false;
16        }
17    }
18}
19
20

*.aspx:

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

你可能感兴趣的文章
随行付微服务测试之静态代码扫描
查看>>
充分利用人工智能促进教育公平
查看>>
经典排序算法python回顾之二 选择排序
查看>>
菜鸟编辑器开发架构设想
查看>>
OSChina 娱乐弹弹弹——每人一 iPhone,程序猿福利~
查看>>
OSChina 周一乱弹 ——程序员都是聪明的动物
查看>>
OSChina 周三乱弹 —— 我自己总觉得我的灵魂有毒
查看>>
OSChina 周六乱弹 —— 要是男友国家给分配就好了
查看>>
Material Design遇到的坑
查看>>
AndroidStudio2.2 NDK开发之CMake和传统JNI区别
查看>>
IOS开发-NSPredicate谓词专题
查看>>
spring cloud学习第一步:创建一个可运行的spring boot项目
查看>>
java集合框架(七):Vector
查看>>
Java Socket 编程指南
查看>>
Mac快捷键
查看>>
100-44
查看>>
POJ 1775 Sum of Factorials
查看>>
spring mvc annotation-driven
查看>>
在使用spring构建项目中,将db配置与程序jar包分离的一种方式
查看>>
50个必备的实用jQuery代码段
查看>>