中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

Mvc動(dòng)態(tài)注冊(cè)HttpModule的示例分析-創(chuàng)新互聯(lián)

這篇文章主要介紹Mvc動(dòng)態(tài)注冊(cè)HttpModule的示例分析,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

成都創(chuàng)新互聯(lián)是一家專業(yè)提供大悟企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、H5技術(shù)、小程序制作等業(yè)務(wù)。10年已為大悟眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)絡(luò)公司優(yōu)惠進(jìn)行中。

Microsoft.Web.Infrastructure.dll與PreApplicationStartMethodAttribute屬性

首先我們利用ilspy來看下Microsoft.Web.Infrastructure.dll這個(gè)類庫是干什么的,如圖:

 Mvc動(dòng)態(tài)注冊(cè)HttpModule的示例分析

[SecuritySafeCritical]
public static void RegisterModule(Type moduleType)
{
  if (DynamicModuleReflectionUtil.Fx45RegisterModuleDelegate != null)
  {
DynamicModuleReflectionUtil.Fx45RegisterModuleDelegate(moduleType);
    return;
  }DynamicModuleUtility.LegacyModuleRegistrar.RegisterModule(moduleType);
}

那看到此類庫的源碼之后,便可以順藤摸瓜,看清其真面目啦。

  1. Microsoft.Web.Infrastructure.DynamicModuleHelper 此命名空間我們可以看出他是關(guān)于動(dòng)態(tài)module的helper 。

  2. DynamicModuleUtility此類便是實(shí)用類,那么打開之后,便看到啦一個(gè)醒目的方法,RegisterModule,注冊(cè)Module,沒錯(cuò)他就是動(dòng)態(tài)注冊(cè)HttoModule的方法。

思考一下上面我的命題,是在項(xiàng)目中一行代碼不用便可執(zhí)行我們的類庫,那么動(dòng)態(tài)注冊(cè)HttpModule有啦,接下來就是怎么一行代碼不寫,就能運(yùn)行我們的類庫呢?這就用到啦微軟提供的PreApplicationStartMethodAttribute 屬性。

  1. PreApplicationStartMethodAttribute:此屬性也可以望文生義,便是在application啟動(dòng)之前要運(yùn)行的方法。就是說他也是一個(gè)程序的入口點(diǎn),并且還是application初始化之前便啟動(dòng)啦,萬物之初先有的便是它,造作吧。

  2. WebActivatorEx:這是一個(gè)類庫,微軟提供啦PreApplicationStartMethodAttribute特性,微軟Nuget開發(fā)小組有一個(gè)成員David Ebbo寫啦這個(gè)更叼的類庫,內(nèi)容如下圖

Mvc動(dòng)態(tài)注冊(cè)HttpModule的示例分析

呢,這個(gè)類庫可以動(dòng)態(tài)注冊(cè)HttpMoudle,他還實(shí)現(xiàn)不修改全局文件就可以加入,Application_Start()/Shutdown()事件,源碼你可以使用ilspy查看,也有項(xiàng)目的git地址,通過nuget可以獲取,值得你去研究下。

Mvc動(dòng)態(tài)注冊(cè)HttpModule的示例分析

代碼實(shí)現(xiàn)動(dòng)態(tài)注冊(cè)HttpMoudle

[assembly: WebActivatorEx.PreApplicationStartMethod(typeof(RoutingCore.PreApplicationStartRegist), "PreStart")]
namespace RoutingCore
{
  public class PreApplicationStartRegist
  {
    private static bool hasLoaded;
    public static void PreStart()
    {
      if (!hasLoaded)
      {
        hasLoaded = true;
        DynamicModuleUtility.RegisterModule(typeof(RoutingModule));
      }
    }
  }
}
public class RoutingModule : IHttpModule
  {
    public void Init(HttpApplication context)
    {
      context.BeginRequest += new EventHandler(context_BeginRequest);
      context.Error += new EventHandler(context_ErrorRequest);
    }
    void context_BeginRequest(object sender, EventArgs e)
    {
    }
    void context_ErrorRequest(object sender, EventArgs e)
    {
      HttpApplication ap = sender as HttpApplication;
      var error = ap.Server.GetLastError();
      var code = (error is HttpException) ? (error as HttpException).GetHttpCode() : 500;
      if (code != 404)
      {
      }
      // 寫入本地文件,隊(duì)列或數(shù)據(jù)庫 
      // ...          
      ap.Server.ClearError();
      ap.Response.Write(error.Message);
      ap.Response.End();
    }
    public void Dispose() { }
  }

以上是“Mvc動(dòng)態(tài)注冊(cè)HttpModule的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

名稱欄目:Mvc動(dòng)態(tài)注冊(cè)HttpModule的示例分析-創(chuàng)新互聯(lián)
本文來源:http://www.rwnh.cn/article10/ccisgo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)動(dòng)態(tài)網(wǎng)站、網(wǎng)站維護(hù)、品牌網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站建設(shè)、標(biāo)簽優(yōu)化

廣告

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

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司
德兴市| 徐水县| 道真| 馆陶县| 策勒县| 秭归县| 涡阳县| 沂水县| 西昌市| 玛曲县| 安丘市| 洪洞县| 本溪市| 新密市| 富平县| 满城县| 区。| 积石山| 台南县| 沙河市| 镇赉县| 玉树县| 腾冲县| 永川市| 绿春县| 平和县| 盐亭县| 禄劝| 宜黄县| 甘孜县| 江华| 正蓝旗| 江门市| 保靖县| 吉安市| 龙门县| 改则县| 友谊县| 屏东县| 天台县| 靖江市|