• ashx文件的使用(转)


    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" />

     

    当你希望从ashxHttpHandler里访问你的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"]);
    }
    }

  • 相关阅读:
    正则二三事
    docker elasticsearch 5.6.13 安装ik分词器
    centos docker 防火墙设置(多个ip之间互相访问)
    ElasticSearch结构化搜索和全文搜索
    Jest — ElasticSearch Java 客户端
    提高redis cluster集群的安全性,增加密码验证
    spring boot 设置 gzip 压缩
    centos 7磁盘空间满了导致redis cluster问题和kafka的问题
    SpringBoot之MySQL数据的丢失的元凶--事务(转)
    mysql mycat 1.6.6.1-release 批量 insert 数据丢失问题(续)
  • 原文地址:https://www.cnblogs.com/LiaoHao/p/3180473.html
Copyright © 2020-2023  润新知