Handler

httphandler就是来处理客户端对服务器端请求的中转站 后缀名是ashx


案例

namespace BookShop.Handler
{
/// 
/// BookHandler 的摘要说明
/// 
public class BookHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
string fileName = context.Request.Url.ToString(); //获取请求的地址
fileName = fileName.Substring(fileName.LastIndexOf('/') + 1);
string bookPic = context.Server.MapPath("/images/BookCovers/" + fileName);
Image book;
if (File.Exists(bookPic))
{
//读取对应的图片
book = Image.FromFile(bookPic);
//读取水印图片
Image water = Image.FromFile(context.Server.MapPath("/images/WaterMark.jpg"));
//画布
Graphics g = Graphics.FromImage(book);
//在画布上❀水印
g.DrawImage(water, book.Width - water.Width, book.Height - water.Height);
g.Dispose(); //释放资源
water.Dispose(); //释放

}
else
{
//如果请求图书不存在,返回默认图片
book = Image.FromFile(context.Server.MapPath("/Images/default.jpg"));
}
context.Response.ContentType = "image/jpeg"; //设置输出格式
//向客户端输出图片流
book.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
book.Dispose(); //释放
}

public bool IsReusable
{
get
{
return false;
}
}
}
}

 

handler配置 system.webServer




"bookWater" verb="*" path="/images/BookCovers/*.jpg" type="BookShop.Handler.BookHandler"/>

 

客户端通过浏览器向服务器发送请求中间由aspnet_isapi.dll 再有Application 再由WebModule 再由WebHandler给向客户端

配置项中 谁访问了Path中 那么就要去WebModule 中进行处理

你可能感兴趣的:(Handler)