Handler

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


案例

复制代码
namespace BookShop.Handler
{
/// <summary>
/// BookHandler 的摘要说明
/// </summary>
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

<system.webServer>
<handlers><!--配置handler-->
<!--type属性需要明确命名空间-->
<add name="bookWater" verb="*" path="/images/BookCovers/*.jpg" type="BookShop.Handler.BookHandler"/>
</handlers>
</system.webServer>

 

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

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

posted @   ZaraNet  阅读(123)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示