ashx文件的使用小结

 这篇文章主要是对ashx文件的使用进行了介绍。需要的朋友可以过来参考下,希望对大家有所帮助

一提到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" />
 
当你希望从ashx或HttpHandler里访问你的Session时,你必须实现IReadOnlySessionState接口.
 
代码:
 
代码如下:
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,可以使服务器支持伪静态的)
 

时间: 2024-11-13 15:55:21

ashx文件的使用小结的相关文章

ashx文件的使用小结_实用技巧

一提到Ashx文件,我们就会想到http handler以及图片加载(在之前我们一般使用ASPX或者Webservice去做),一般做法如下: Handler.ashx: 复制代码 代码如下: <%@ WebHandler Language="C#" Class="Handler" %>using System;using System.IO;using System.Web;public class Handler : IHttpHandler { p

使用ashx文件生成验证码图片

 在vs2005中可以直接创建.ashx文件,其项目叫做一般处理程序,.ashx文件一般用来处理只有返回,二一般不回传的数据,比如动态生成图片,或者文字,以下为清清月儿博客上转载的一个用ashx动态生成验证码图片的代码. //绘制验证码图片ValidateImageHandler.ashx 1 <%@ WebHandler Language="C#" Class="ValidateImageHandler" %> 2  3 using System; 4

ASP.NET教程:使用.ashx文件去除重复内容

不同的链接指向的页面如果具有大量相同的内容,这种现象就会被称为"重复内容",如果一个网站的重复内容很多,搜索引擎就会认为这个网站的价值不高.所以我们应尽量避免各种重复内容. 动态网站的重复内容常常是由URL参数引起的,而URL重写会恶化这一现象(比较耐人寻味哟,呵呵).因为如果使用的是原始的URL参数的话,搜索引擎可能会进行适当的判断,而得知重复内容是由URL参数引起的,自动的进行相应的处理:而URL重写会掩盖URL参数,反而使得搜索引擎无法识别URL参数.比如: 原始的URL:htt

ashx介绍以及ashx文件与aspx文件之间的区别

 这篇文章主要介绍了ashx以及ashx文件与aspx文件之间的区别.需要的朋友可以过来参考下,希望对大家有所帮助 ashx是什么文件?   .ashx 文件用于写web handler的..ashx文件与.aspx文件类似,可以通过它来调用HttpHandler类,它免去了普通.aspx页面的控件解析以及页面处理的过程.其实就是带HTML和C#的混合文件.    .ashx文件适合产生供浏览器处理的.不需要回发处理的数据格式,例如用于生成动态图片.动态文本等内容.    ashx文件是.net

.ashx 文件

.ashx 文件用于写web handler的.其实就是带HTML和C#的混合文件.当然你完全可以用.aspx 的文件后缀.使用.ashx 可以让你专注于编程而不用管相关的WEB技术..ashx必须包含IsReusable. 如下例所示 <% @ webhandler language="C#" class="AverageHandler" %> using System; using System.Web; public class AverageHa

新人求解答—Jquery怎么得到从ashx文件传过来的Json字符串里面的二进制数据!!

问题描述 新人求解答-Jquery怎么得到从ashx文件传过来的Json字符串里面的二进制数据!! 解决方案 <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.4.2.min.js"></script> <script> $.ajax({ url: 'xxxxx.ashx', dataType: 'json', success: function (json) { console.

使用.ashx文件尽量避免各种重复内容

摘要: 不同的链接指向的页面如果具有大量相同的内容,这种现象就会被称为重复内容,如果一个网站的重复内容很多,搜索引擎就会认为这个网站的价值不高.所以我们应尽量避免各种重复 不同的链接指向的页面如果具有大量相同的内容,这种现象就会被称为"重复内容",如果一个网站的重复内容很多,搜索引擎就会认为这个网站的价值不高.所以我们应尽量避免各种重复内容. 动态网站的重复内容常常是由URL参数引起的,而URL重写会恶化这一现象(比较耐人寻味哟,呵呵).因为如果使用的是原始的URL参数的话,搜索引擎可

ashx文件的使用[转]

原文:http://www.cnblogs.com/jerry0925/articles/901936.html   Ashx文件,我们可用用来作图片加载(在之前我们一般使用ASPX或者Webservice去做),一般做法如下: Handler.ashx:    1<%@ WebHandler Language="C#" Class="Handler" %> 2using System; 3using System.IO; 4using System.W

.net网站中,ashx文件本地运行没问题,发布到服务器就找不到文件中引用的外部类了~

问题描述 解决方案 解决方案二:你看一下你的ashx文件的Inherits字段解决方案三:编译发布之后,把bin目录完整上传解决方案四:你这个Handler看着像是一个自定义的委托,相关dll缺失吧解决方案五:引用3楼starfd的回复: 你这个Handler看着像是一个自定义的委托,相关dll缺失吧 dll是有滴~~解决方案六:引用1楼lkhuge的回复: 你看一下你的ashx文件的Inherits字段 ashx文件支持Inherits吗?没有Inherits呢...解决方案七:这个是百度ue