ASP.NET笔记之 Httphandler的操作详解

  1、httphandler

ASP.NET笔记之 Httphandler的操作详解

  实例1:通过生成一张动态图片输出客户端的IP地址、操作系统类型、浏览器类型

  

复制代码 代码如下:

  <%@ WebHandler Language="C#" Class="visitor" %>

  using System;

  using System.Web;

  public class visitor : IHttpHandler {

  public void ProcessRequest(HttpContext context)

  {

  context.Response.ContentType = "image/JPEG";

  using (System.Drawing.Bitmap bitImage = new System.Drawing.Bitmap(330, 300))

  {

  //设置画布

  using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitImage))

  {

  //IP

  g.DrawString("IP:" + context.Request.UserHostAddress, new System.Drawing.Font("宋体", 20), System.Drawing.Brushes.Red, new System.Drawing.PointF(0, 0));

  //操作系统

  g.DrawString("操作系统:" + context.Request.Browser.Platform, new System.Drawing.Font("宋体", 20), System.Drawing.Brushes.Red, new System.Drawing.PointF(0, 50));

  //浏览器

  g.DrawString("浏览器:" + context.Request.Browser.Type, new System.Drawing.Font("宋体", 20), System.Drawing.Brushes.Red, new System.Drawing.PointF(0, 100));

  }

  //保存到输出流中

  bitImage.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);

  }

  }

  public bool IsReusable {

  get {

  return false;

  }

  }

  }

  实例2:通过“下载”连接,弹出用户附件保存

  html代码:<a href="dowload.ashx">下载</a>

  

复制代码 代码如下:

  <%@ WebHandler Language="C#" Class="dowload" %>

  using System;

  using System.Web;

  public class dowload : IHttpHandler {

  public void ProcessRequest(HttpContext context)

  {

  string fileName = HttpUtility.UrlEncode("悲剧.jpg");

  context.Response.ContentType = "image/JPEG";

  //打开附件对话框  报文头header和设置它的值

  context.Response.AddHeader("Content-Disposition", "attachment:filename=" + fileName);

  context.Response.WriteFile("苹果.jpg");

  }

  public bool IsReusable {

  get {

  return false;

  }

  }

  }