欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

ASP.NETMVCModule-創(chuàng)新互聯(lián)

ASP.NET MVC Module

成都創(chuàng)新互聯(lián)是專業(yè)的鳳泉網(wǎng)站建設(shè)公司,鳳泉接單;提供成都做網(wǎng)站、成都網(wǎng)站建設(shè),網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行鳳泉網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

前言

在ASP.NET中管道模型是怎么來實(shí)現(xiàn)的?在請求處理流程一文中大概的講述了Http Module和HttpApplication之間的關(guān)系,而并沒有涉及到Http Module怎么去實(shí)現(xiàn)和注冊。Http Module的意義很大,ASP.NET MVC框架怎么捕獲請求的?或者換一種方式來說ASP.NET MVC框架的入口點(diǎn)在哪里?

Http Module注冊使用

我們直接進(jìn)入主題來看一下自定義的實(shí)現(xiàn),首先在Module使用之前我們要先定義個Module,定義很簡單,定義個類型并且實(shí)現(xiàn)IHttpModule接口示例代碼1-1

代碼1-1

 1     public class CustomModule:IHttpModule
 2     {
 3         public void Dispose()
 4         {
 5             throw new NotImplementedException();
 6         }
 7 
 8         public void Init(HttpApplication context)
 9         {
10             context.BeginRequest += new EventHandler(context_BeginRequest);
11             context.EndRequest += new EventHandler(context_EndRequest);
12         }
13 
14         void context_EndRequest(object sender, EventArgs e)
15         {
16             ((HttpApplication)sender).Context.Response.Write("<h2>請求處理結(jié)束后進(jìn)入自定義Module</h2>");
17         }
18 
19         void context_BeginRequest(object sender, EventArgs e)
20         {
21             ((HttpApplication)sender).Context.Response.Write("<h2>請求處理開始前進(jìn)入自定義Module</h2><hr>");
22         }
23     }

這個時候我們自定義的Module就已經(jīng)定義好了,在CustomModule類型的 Init()方法中是訂閱了HttpApplication的事件,在請求處理流程文中說過,這里不作講解了。

這個時候運(yùn)行程序是不行的,ASP.NET有天大的本事也不知道你自己自定義了一個Module的阿,你得告訴它我這有個自定義的Module,運(yùn)行的時候要執(zhí)行我的這個Module。

現(xiàn)在我們來把Module注冊到系統(tǒng)中,打開項(xiàng)目中的Web.config配置文件,找到<system.web>節(jié)點(diǎn)添加<httpModules>節(jié)點(diǎn).

代碼1-2

<system.web>
    <httpModules>
      <add name="MyCustomModule" type="MvcApplication.CustomModule,MvcApplication"/>
    </httpModules>
 </system.web>

這里要說的是Name屬***&ldquo;MyCustomModule&rdquo;值只是Module注冊到系統(tǒng)的名稱,可通過HttpApplication實(shí)例對象.Modules["MyCustomModule"]的方式根據(jù)Name獲取到已經(jīng)注冊到系統(tǒng)中的Module

Type屬***值則為自定義的CustomModule類型所在的命名空間已經(jīng)類型名稱,逗號后面的值為CustomModule類型所在的程序集名稱。

這個時候還是不能運(yùn)行程序的,因?yàn)椴┲鞯氖纠绦蚴鞘褂肕VC框架的項(xiàng)目,所以要添加一個空的控制器和一個視圖。

  1. 右擊Controllers文件夾添加->控制器,設(shè)置名稱為HomeController,設(shè)置控制器模板為空控制器,單擊確定后,會看到控制器中有個默認(rèn)的Index()方法。

  2. 右擊Index()方法名稱,選擇添加視圖后彈出對話框點(diǎn)擊添加即可。

  3. 添加 <h3>自定義Module演示</h3><hr /> 到視圖

這樣我們再看一下項(xiàng)目的運(yùn)行結(jié)果:

圖1

ASP.NET MVC Module

UrlRoutingModule

這里要說的UrlRoutingModule類型就是一個系統(tǒng)定義的Module,為什么要講解它呢?因?yàn)閺乃锩婵梢钥吹较到y(tǒng)的擴(kuò)展點(diǎn),也因?yàn)樗锹酚上到y(tǒng)和MVC框架的連接點(diǎn)。

根據(jù)前面的篇幅對于路由的學(xué)習(xí),可以說是對路由有了一個基礎(chǔ)的認(rèn)識,大家都知道請求的Url會去匹配系統(tǒng)的定義的路由模式,然后獲得一個RouteData這么一個對象實(shí)例,然后根據(jù)它里面的信息來進(jìn)行對控制器的生成操作等等后續(xù)的一些行為。

我們來看圖1來理解UrlRoutingModule的作用,或許在實(shí)際項(xiàng)目開發(fā)中不會自己去擴(kuò)展這部分內(nèi)容,但是多了解一下也沒有壞處。

圖2

ASP.NET MVC Module

UrlRoutingModule類型的內(nèi)部大概實(shí)現(xiàn)如代碼1-3

代碼1-3

 1         void context_PostResolveRequestCache(object sender, EventArgs e)
 2         {
 3             HttpApplication context = sender as HttpApplication;
 4             HttpContextWrapper contextWrapper = new HttpContextWrapper(context.Context);
 5 
 6             RouteData routeData = RouteTable.Routes.GetRouteData(contextWrapper);
 7 
 8             RequestContext requestContext = new RequestContext(contextWrapper, routeData);
 9             IHttpHandler httpHandler = routeData.RouteHandler.GetHttpHandler(requestContext);
10             httpHandler.Proce***equest(context.Context);
11         }

IRouteHandler、IHttpHandler

在上面的代碼1-3中,httpHandler變量是通過RouteData對象下的RouteHandler屬***里的GetHttpHandler()方法來根據(jù)請求上下文對象RequestContext獲取的。

這里捎帶一句,關(guān)于RequestContext類型(不是對象類型,是參數(shù)上下文類型)在MVC后續(xù)的學(xué)習(xí)中會經(jīng)常見到,這也算是一種開發(fā)中的模式吧,RequestContext對象中封裝了HttpContextBase對象和RouteData對象。

接著剛才的話題,MvcRouteHandler類型已經(jīng)實(shí)現(xiàn)了IRouteHandler類型,細(xì)心的朋友在閱讀前面的文章會發(fā)現(xiàn),在MVC中注冊路由的時候?yàn)槊總€自定義路由規(guī)則(也就是Route對象)實(shí)例化的時候是用默認(rèn)的MvcRouteHandler類型,從而會轉(zhuǎn)變到RouteData的RouteHandler屬***里,在MvcRouteHandler類型的默認(rèn)實(shí)現(xiàn)里,GetHttpHandler()方法返回的是MvcHandler,然后就像上面所說的那樣。在IHttpHandler接口中定義了一個Proce***equest()方法,這個方法就是MVC框架中請求->路由->控制器的一個過程。這部分內(nèi)容會在控制器部分說明。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

網(wǎng)站標(biāo)題:ASP.NETMVCModule-創(chuàng)新互聯(lián)
文章URL:http://aaarwkj.com/article14/cdhcge.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計公司、小程序開發(fā)、微信小程序、面包屑導(dǎo)航域名注冊、動態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)
日本人妻丰满熟妇久久| 国产免费不卡午夜福利在线| 91精品国产综合久久男男| 日本人妻丰满熟妇久久| 午夜啪视频免费在线观看| 亚洲av一区二区三区网站| 国产精品五月婷婷六月丁香| 成人免费视频一区二区三区| 精品欧美一区二区在线| 一区不卡在线视频免费国产| 日本女优高清不卡一二三四区| 国产精品av国产精华液| 亚洲午夜黄色生活片观看| 99人妻精品一区二区| 精品视频一区二区三区中文字幕| 就去吻色综合一二三四| 夜夜春久久天堂亚洲精品| 蜜桃一区二区三区免费| 午夜福利主播一区二区| 精品一区二区三区毛卡片| 中文字幕精品一区二区三区视频| 麻豆成人久久精品二区三| 97视频在线观看网站| 黄色18禁网站在线看| av影片天堂在线观看| 欧美色一区二区三区四区| 一区二区三区毛片av网站| 日韩中文字幕免费一区二区| 亚洲国产成人精品女人久久久′| 欧美一区二区三区有限公司| 国产大神91一区二区三区| 免费人成网站在线观看| 亚洲精品中文字幕久久| 日本视频免费一区二区| 日韩欧美中文字幕综合网| 免费亚洲一区二区三区| 色哟哟精品丝袜一区二区| 亚洲欧美综合精品二区| 国产精品一区日韩专区| 国产91精品系列在线观看| 欧美亚洲国产日韩另类|