真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

ASP.NET中httpHandler如何使用

本篇文章為大家展示了ASP.NET中httpHandler如何使用,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

成都創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的縉云網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

Asp.net系統(tǒng)框架自身有一個(gè)http處理的邏輯。這個(gè)邏輯由machine.config的 名為httpRuntime的節(jié)指定

﹤httpHandlers﹥。。。﹤/httpHandlers﹥

告訴ASP.NET框架一個(gè)應(yīng)用程序的http處理程序缺省情況下該如何決定處理邏輯。所謂如何處理是指http 謂詞(Verb)和資源的位置(Path)組合決定的請(qǐng)求的處理。

例如:

﹤add      verb="*"    path="*.aspx"    type="System.Web.UI.PageHandlerFactory" /﹥

告訴ASP.NET在處理任何”.aspx”的文件的任何請(qǐng)求(post/get/head/put)時(shí)候都應(yīng)該使用System.Web.UI.PageHandlerFactory類處理請(qǐng)求。這個(gè)類是系統(tǒng)框架缺省類,遵循System.Web.IhttpHandler接口(但是由MS官方實(shí)現(xiàn))。如果你在研究透aspx頁(yè)框架后,你可以自己寫一個(gè)aspx頁(yè)工廠處理程序,簽名后加入全局應(yīng)用程序,再修改此處即可讓aspx頁(yè)面沒處理時(shí)是按照自己實(shí)現(xiàn)的邏輯進(jìn)行(你甚至可以不遵循頁(yè)面控件實(shí)現(xiàn)邏輯,雖然那樣并無(wú)太大意義)。

我們來(lái)做個(gè)實(shí)驗(yàn):我們利用瀏覽器發(fā)出對(duì).config文件的請(qǐng)求(譬如web.config),卻省情況下asp.net會(huì)報(bào)告錯(cuò)誤,但是假若我們刪除machine.config中的

﹤add       verb="*"      path="*.config"     type="System.Web.HttpForbiddenHandler" /﹥

并保存。重新請(qǐng)求該文件后,那么會(huì)看到瀏覽器可以讀取到此文件并可顯示。重新加上該節(jié),重新請(qǐng)求會(huì)看到系統(tǒng)報(bào)告錯(cuò)誤。這充分說明了http處理工廠是根據(jù)配置文件進(jìn)行處理的。據(jù)此類推,我們可以閱讀machine.config的其他相關(guān)配直節(jié),充分理解系統(tǒng)缺省處理邏輯是如何處理web請(qǐng)求(具體為合法的http請(qǐng)求)的。另外,web.config也可以據(jù)此增加/刪除指定http處理程序。參考MSDN,我們發(fā)現(xiàn),任何一個(gè)HTTP處理程序?qū)嶋H上是實(shí)現(xiàn)了System.Web.IhttpHandler接口的asp.net類。接口應(yīng)當(dāng)實(shí)現(xiàn)一個(gè)屬性和一個(gè)借口方法:

公共屬性

IsReusable 獲取一個(gè)值,該值指示其他請(qǐng)求是否可以使用 IHttpHandler 實(shí)例。決定了此處理程序是否可以重用(通??朔靡馕吨到y(tǒng)性能的提高)

公共方法

ProcessRequest 通過實(shí)現(xiàn) IHttpHandler 接口的自定義 HttpHandler 啟用 HTTP Web 請(qǐng)求的處理。也就是處理實(shí)現(xiàn)。

ASP.NET httpHandler使用問題:假設(shè)我們寫好了一個(gè)http處理程序,如何讓他發(fā)揮作用呢?譬如,我們需要禁止asp.net下載.info文件,我們應(yīng)該進(jìn)行如下處理:

***步,在web服務(wù)器上增加指示,讓asp.net處理此擴(kuò)展名。具體為:

打開IIS(假設(shè)web服務(wù)器是IIS),找到應(yīng)用程序,配置,應(yīng)用程序映射,添加映射,在可執(zhí)行文件中輸入當(dāng)前.net版本的aspnet_isapi.dll(如C:\WINNT\Microsoft.NET\Framework\v1.0.3705\aspnet_isapi.dll),擴(kuò)展名輸入.info,謂詞全部,檢查文件是否存在。經(jīng)過這些步驟,確保IIS不會(huì)自作多情處理.info文件,而讓給aspnet_isapi.dll處理,后者則會(huì)將請(qǐng)求交給asp.net進(jìn)行處理。

第二步,在machine.config或者web.config中加入相映配置節(jié)。都是在﹤System.Web〉中的加入﹤httphandler﹥子節(jié),按照格式指定,譬如:

﹤httphandlers﹥    …    ﹤add verb=”*” path=”*.info” type=” System.Web.HttpForbiddenHandler”﹥   …   ﹤/httphandlers﹥

經(jīng)過上述節(jié)配置,.info文件會(huì)被保護(hù)起來(lái),任何企圖訪問都會(huì)被告知“無(wú)法提供此類型的頁(yè)?!?;如果換成你自己的類,則被asp.net框架所調(diào)用來(lái)處理.info請(qǐng)求。

下面來(lái)實(shí)現(xiàn)一個(gè)http處理程序例子,我們?cè)黾右粋€(gè)擴(kuò)展名.img,img文件根據(jù)參數(shù)生成一個(gè)圖片,譬如我們向ASP.NET框架請(qǐng)求 abc.img,那么系統(tǒng)返回content為image/jpg格式的圖片,圖片內(nèi)容為abc

源代碼如下:

using System;   using System.Web ;   using System.Drawing;    using System.Drawing.Drawing2D ;    using System.Drawing.Imaging ;        namespace ImyWeb   {      public class IMG : System.Web.IHttpHandler        {            public IMG()            {}              public bool IsReusable           {                get{ return true;}      }          public void ProcessRequest(HttpContext context)           {         string vstr=_getViewString(context);         context.Response.ContentType ="image/jpeg";          Image img=new Bitmap(128,128,PixelFormat.Format32bppArgb );           Graphics g=Graphics.FromImage(img);            Brush backBrush=new SolidBrush(Color.Gray ); //灰色                      Brush textBrush=new SolidBrush(Color.Black );                 g.FillRectangle(backBrush,0,0,128,128);                      Font ft=new Font( "Arial",32);          g.DrawString(vstr,ft,textBrush,    new RectangleF(0,0,128,128),    new StringFormat(StringFormatFlags.NoWrap ));                      img.Save(context.Response.OutputStream,ImageFormat.Jpeg );                      context.Response .Flush();            backBrush.Dispose();   textBrush.Dispose();    g.Dispose();   img.Dispose();    return ;            }             //************//             private string _getViewString(HttpContext context)            {                 string str= context.Request.RawUrl ;                 int l1=str.LastIndexOf("/");                 int l2=str.LastIndexOf(".");                  return str.Substring(l1+1,l2-l1-1);             }         }   }

編譯后,得到應(yīng)用程序?yàn)閙yHttpHandler.dll。

現(xiàn)在,我們需要告訴ASP.NET應(yīng)用程序(假設(shè)我們的web應(yīng)用程序在localHost/webApp1下),如何處理.img文件了:

***步,在web服務(wù)器上增加指示,讓asp.net處理此.img的擴(kuò)展名(讓IIS歇著吧,不要插手asp.net的事了,讓asp.net處理*.img了)

第二,在web.config中的﹤system.web﹥節(jié)中增加:

﹤httpHndlers﹥         ﹤add verb="*" path="*.img" type="IBuySpy.IMG,IMGHttphandler" /﹥   ﹤/httpHndlers﹥

為了能夠讓ASP.NET程序能夠定位到應(yīng)用程序集,將myHttpHandler.dll拷貝到web應(yīng)用程序的bin目錄

接下來(lái),我們測(cè)試:在測(cè)試的web應(yīng)用程序WebApp1下隨意請(qǐng)求一個(gè).img的資源,將會(huì)得到一個(gè)jpg圖片。http://localhost/WebApp1/test.img

以上為一個(gè)簡(jiǎn)單的ASP.NET httpHandler處理程序的設(shè)計(jì)、安裝過程。實(shí)際上,假設(shè)你對(duì)asp.net缺省的*。aspx 的HttpHandler處理不滿,你可以自己進(jìn)行設(shè)計(jì),替換覆蓋掉machine.config中關(guān)于*.aspx的缺省處理類 "System.Web.UI.PageHandlerFactory”。你要明白,ms設(shè)計(jì)了一個(gè)服務(wù)框架,而這個(gè)框架內(nèi)具有了基本的處理能力,但是優(yōu)秀的是這個(gè)框架的部分落及是可以根據(jù)自己的意愿進(jìn)行替換的(我們看到大量的接口使用,我們應(yīng)當(dāng)意識(shí)到那是使用了大量的現(xiàn)代軟件設(shè)計(jì)技術(shù)和思想)。學(xué)習(xí)asp.net技術(shù)要站在全局來(lái)了解框架各個(gè)組成部分間如何執(zhí)行、調(diào)用、發(fā)生關(guān)系、縣戶作用,這比實(shí)現(xiàn)了一個(gè)花哨的datagrid要更有意義。

上述內(nèi)容就是ASP.NET中httpHandler如何使用,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


當(dāng)前題目:ASP.NET中httpHandler如何使用
本文URL:http://weahome.cn/article/pdddoj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部