关于ashx文件的使用的一些个人见解
来源:互联网 发布:缓存数据怎么清除 编辑:程序博客网 时间:2024/04/28 13:39
/* **********************************
* 转载自 www.21centuryit.com *
*********************************** */
一提到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
<script src="Handler.ashx"></script>
也可以把.ashx当成css文件
<link href="css/Handler.ashx" rel="stylesheet" type="text/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:
<script type="text/javascript" src="TestHandler.ashx" />
其实,学习的思路不应该这样,以上除了图片外,我们都用偏了,为什么用偏了呢,因为软件以简单、实用为主,我们只是把以上纯粹看成可一项技术而没有把它放到软件的地位去考虑:)
具体的用途,大家可以参考Rewirte.dll (这个dll,可以使服务器支持伪静态的)!
反编译,看看人家做的:)邹是漂亮
转载请引用www.21centuryit.com
- 关于ashx文件的使用的一些个人见解
- 关于项目管理的一些个人见解
- 关于浮动的一些个人见解
- 关于benchmarksql的一些个人见解
- 关于MYSQL优化的一些个人见解
- 关于Fragment使用的一些见解
- 关于Fragment使用的一些见解
- 关于select上下移动实现的一些个人见解
- 关于哪种杀毒软件最好的一些个人见解[转载]
- 个人关于管理一些中型程序的见解
- 关于windows保护模式的一些个人见解
- 关于raycast与screenpointoray的一些个人见解
- 【开发手札】关于开发的一些个人心得见解
- 关于微机原理的一些个人见解(2)
- 北京SEO祭司:关于熊掌号的一些个人见解
- 关于ROS的个人见解
- 关于指针的个人见解
- 关于AIDL的个人见解
- ubuntu应用小结
- 请多多指教
- [转载李建忠老师的]C#语言的几个层次
- TActiveForm遇到的焦点问题,导致Key/MouseWheel事件无法接收
- 用ncurses在linux字符界面中进行界面开发
- 关于ashx文件的使用的一些个人见解
- javaScript倒计时程序
- 存储备份技术
- 开始写博客
- BBS一
- 理解NS2中Packet的包头
- 使用FileUpload控件上传图片并自动生成缩略图、自动生成带文字和图片的水印图
- 都是诺顿惹的祸
- Observer Pattern Implement MVC