ashx文件的使用小结

 更新时间:2013年12月13日 09:45:14   作者:  
这篇文章主要是对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,可以使服务器支持伪静态的)

相关文章

  • asp.net下遍历页面中所有的指定控件的代码

    asp.net下遍历页面中所有的指定控件的代码

    遍历aspx页面中所有的指定控件的代码
    2010-02-02
  • asp.net分割字符串的几种方法小结

    asp.net分割字符串的几种方法小结

    在编写程序中,经常要用到分割的方法来处理一些字符串。这里总结了几种常用的分割方法
    2012-01-01
  • .NET Core实现企业微信消息推送

    .NET Core实现企业微信消息推送

    这篇文章介绍了.NET Core实现企业微信消息推送的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • 用vs调试sql存储过程图文介绍

    用vs调试sql存储过程图文介绍

    想必大家应该有给存储过程找错误的经历吧,一遍遍的去读sql代码,一句一句的测试,发现一个小错误可能都要用很长的时间,接下来将介绍使用vs2010调试存储过程,感兴趣的朋友可以不要错过了啊
    2013-02-02
  • .NET下为百度文本编辑器UEditor增加图片删除功能示例

    .NET下为百度文本编辑器UEditor增加图片删除功能示例

    今天下载了目前最新版1.2.5为版本看更新记录,主要是对表格做个修改,我下载用上,上传图片的删除功能给取消了,下面与大家分享下增加图片删除功能示例
    2013-05-05
  • asp.net中ViewState的用法详解

    asp.net中ViewState的用法详解

    本文给大家介绍asp.net中viewstate的用法,涉及到viewstate的原理、用法、与session的对比等方面的知识,对viewstate用法感兴趣的朋友一起看看吧
    2015-10-10
  • Asp.Net性能优化技巧汇总

    Asp.Net性能优化技巧汇总

    这篇文章主要介绍了Asp.Net性能优化技巧汇总,非常实用的归纳总结,需要的朋友可以参考下
    2014-07-07
  • SignalR中丰富多彩的消息推送方式的实现代码

    SignalR中丰富多彩的消息推送方式的实现代码

    这篇文章主要介绍了SignalR中丰富多彩的消息推送方式的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • asp.net url分页类代码

    asp.net url分页类代码

    asp.net url分页类代码,需要用到分页的朋友可以参考下。
    2009-11-11
  • .NET 6中的dotnet monitor讲解

    .NET 6中的dotnet monitor讲解

    dotnet monitor为Azure App Service(Linux)提供.NET 应用程序的诊断工具提供支持。这篇文章讲解了.NET 6中的dotnet monitor,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-12-12

最新评论