• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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,可以使服务器支持伪静态的)

    您可能感兴趣的文章:
    • ashx中使用session的方法(获取session值)
    • ASP.NET ASHX中获得Session的方法
    • Asp.net在ashx文件中处理Session问题解决方法
    • 在ashx文件中使用session的解决思路
    • ashx介绍以及ashx文件与aspx文件之间的区别
    • aspx与ascx,ashx的用法总结
    • 后缀为 ashx 与 axd 的文件区别浅析
    • 基于.NET中:自动将请求参数绑定到ASPX、ASHX和MVC的方法(菜鸟必看)
    • *.ashx文件不能访问Session值的解决方法
    上一篇:aspx与ascx,ashx的用法总结
    下一篇:ashx介绍以及ashx文件与aspx文件之间的区别
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    ashx文件的使用小结 ashx,文件,的,使用,小结,