在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
接口IHttpHandler的定义如下: 复制代码 代码如下: interface IHttpHandler { void ProcessRequest(HttpContext ctx); bool IsReuseable { get; } 1新建一网站,名为MyHttpHandlerTest 2右击添加,选择类库,取名为MyHttpHandler 3-在上一步新建的类库上右键添加System.Web引用 主要代码: 复制代码 代码如下: using System; using System.Collections.Generic; using System.Text; using System.Web; using System.Web.SessionState; namespace MyHttpHandler { public class Class1:IHttpHandler,IRequiresSessionState { #region IHttpHandler成员 public bool IsReusable { get { return true; } } public void ProcessRequest(HttpContext context) { context.Response.Write("handler处理"); } #endregion } } 4-在MyHttpHandler类库上右键,生成,取名为MyHttpHandler 5-在web.config中的system.web节点中天下如下节点 <httpHandlers> <add verb="*" path="Handler1.aspx" type="MyHttpHandler.Class1,MyHttpHandler"/> <!-- 配置文件中的选项说明: · verb可以是"GET"或"POST",表示对GET或POST的请求进行处理。"*"表示对所有请求进行处理。 · Path指明对相应的文件进行处理,"*.aspx"表示对发给所有ASPX页面的请求进行处理。可以指明路径,如"/test/*.aspx",表明只对test目录下的ASPX文件进行处理。 · Type属性中,逗号前的字符串指明HttpHandler的实现类的类名,后面的字符串指明Dll文件的名称。 格式如:type="自定义HttpHandler的实现类的全名,自定义HttpHandler的实现类的命名空间(即Dll名)" 或 type="自定义HttpHandler的实现类的全名" --> </httpHandlers> 6-在MyHttpHandlerTest右键添加引用,选择项目找到刚才编译后的.dll文件 7-运行Handler1.aspx,页面显示: 下面我们利用HttpHandler将一段文字生成于图片中 添加一个类,默认为Class.cs 复制代码 代码如下: using System; using System.Collections.Generic; using System.Text; using System.Web; using System.Web.SessionState; using System.Drawing; /// <summary> /// Class1 的摘要说明 /// </summary> public class Class1:IHttpHandler { public Class1() { // // TODO: 在此处添加构造函数逻辑 // } public bool IsReusable { get { return true; } } private static Image OldImage = null; private static Image GetOldImage(HttpContext context) { if (OldImage == null) { OldImage = Image.FromFile(context.Server.MapPath("~/Images/Old.jpg")); } return OldImage.Clone() as Image; } public void ProcessRequest(HttpContext context) { Image newimage = GetOldImage(context); Graphics gh = Graphics.FromImage(newimage); Font font = new Font("Monaco", 24.0f, FontStyle.Regular); string writetext = HttpUtility.UrlEncode(context.Request.QueryString["writetext"]); gh.DrawString(HttpUtility.UrlDecode(writetext), font, new SolidBrush(Color.LightBlue), 20.0f, newimage.Height - font.Height - 30); newimage.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg); gh.Dispose(); newimage.Dispose(); } } 新建一个.aspx页面,添加一个HyperLink控件,再在其.cs文件中添加一段代码传值 复制代码 代码如下: protected void Page_Load(object sender, EventArgs e) { HyperLink1.NavigateUrl = "img.jpg?writetext=" + HttpUtility.UrlEncode("大蜗牛"); } 另外还需在web.config文件中将httpHandlers节点中改为如下 <add verb="*" path="*.jpg" type="Class1"/> 表明对所有的.jpg格式的文件才会处理 参考《道不远人 深入解析asp.net 2.0控件开发》 |
请发表评论