一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - 理解HttpHandler,并為所有*.jpg圖片生成一段文字于圖片上

理解HttpHandler,并為所有*.jpg圖片生成一段文字于圖片上

2019-09-29 11:34asp.net開發網 ASP.NET教程

HttpHandler就是最終相應HTTP請求,生成HTTP響應的處理器,他們的實例由asp.net運行時創建,,并生存在asp.net的運行時環境中,如果asp.net運行時是處理請求的工廠,HttpHandler是處理請求的工人

接口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,并為所有*.jpg圖片生成一段文字于圖片上
下面我們利用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控件開發》

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲品质水蜜桃 | 免费看黄色片的网站 | 韩国三级视频网站 | 草综合 | 精品一成人岛国片在线观看 | 日韩操片| 国产亚洲福利精品一区二区 | 四虎影视免费观看免费观看 | 色噜噜 男人的天堂在线观看 | 日韩精品久久不卡中文字幕 | 91免费在线播放 | 女教师雪白老汉 | 亚洲波多野结衣日韩在线 | 黄色aaa级片 | 吉川爱美与黑人解禁 | 国产一卡二卡3卡4卡四卡在线 | 国产91精选学生在线观看 | 无人在线高清观看 | 精品一区二区国语对白 | 成人中文字幕在线观看 | 欧美xxxxx九色视频免费观看 | 深夜a| 欧美性受xxxx88喷潮 | 免费成年人在线视频 | 99在线精品免费视频九九视 | 13 sewang41| 久久毛片网站 | 91精品大神国产在线播放 | 欧美性一区二区三区 | 日本狠狠操 | 国产精品资源在线观看 | 性一交一无一伦一精一品 | 欧美日韩视频在线第一区二区三区 | 亚洲va久久久噜噜噜久久狠狠 | 日本在线一区二区 | 精品国产在天天线在线麻豆 | 美女露奶奶 | 色天天综合色天天看 | 欧洲第一页 | 天天做天天玩天天爽天天 | 国产在线视频欧美亚综合 |