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 中进行处理
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 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的设计差异