最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

.Net?Core?Aop之IResourceFilter的具體使用

 更新時(shí)間:2022年02月21日 09:13:06   作者:SportSky  
本文主要介紹了.Net?Core?Aop之IResourceFilter的具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

一、簡(jiǎn)介

在.net core 中Filter分為以下六大類:

  • 1、AuthorizeAttribute(權(quán)限驗(yàn)證)
  • 2、IResourceFilter(資源緩存)
  • 3、IActionFilter(執(zhí)行方法前后的記錄)
  • 4、IResultFilter(結(jié)果生成前后擴(kuò)展)
  • 5、IAlwaysRun(響應(yīng)結(jié)果的補(bǔ)充)
  • 6、IExceptionFilter(異常處理)

二、IResourceFilter(同步資源緩存)

1、定義Filter

public class CustomerResourceFilterAttribute : Attribute, IResourceFilter
    {
        private static Dictionary<string,object> cacheDic=new Dictionary<string, object>();
        public void OnResourceExecuting(ResourceExecutingContext context)
        {
            var path=context.HttpContext.Request.Path; 
            if (cacheDic.ContainsKey(path))
            {
                context.Result = (IActionResult)cacheDic[path];
            }
            Console.WriteLine("CustomerResourceFilterAttribute.OnResourceExecuting");
        }
        public void OnResourceExecuted(ResourceExecutedContext context)
        {
            var path = context.HttpContext.Request.Path;
            cacheDic[path] = context.Result;
            Console.WriteLine("CustomerResourceFilterAttribute.OnResourceExecuted");
        }

        
    }

2、使用Filter

public class HomeController : Controller
    {
        private readonly ILogger<HomeController> _logger;

        public HomeController(ILogger<HomeController> logger)
        {
            _logger = logger;
            Console.WriteLine($"執(zhí)行 {this.GetType().Name} 構(gòu)造函數(shù)");
        }

        [CustomerResourceFilter]
        public IActionResult Index()
        {
            ViewBag.Data = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
            return View();
        }
    }

3、前端頁(yè)面代碼

@{
    ViewData["Title"] = "Home Page";
}


<h3>來(lái)自于控制器的結(jié)果:@ViewBag.Data</h3>
<h3>來(lái)自于頁(yè)面的結(jié)果:@DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")</h3>

4、頁(yè)面效果

按F5可以看到頁(yè)面值的變化效果,"來(lái)自于控制器的結(jié)果"的值會(huì)一直不變,“來(lái)自于頁(yè)面的結(jié)果”隨著頁(yè)面刷新,值會(huì)一直變化

三、IAsyncResourceFilter(異步資源緩存)

public class CustomerAsyncResourceFilterAttribute : Attribute, IAsyncResourceFilter
    {
        private static Dictionary<string, object> cacheDic = new Dictionary<string, object>();
        public async Task OnResourceExecutionAsync(ResourceExecutingContext context, ResourceExecutionDelegate next)
        {
            Console.WriteLine("CustomerResourceFilterAttribute.OnResourceExecutionAsync Before");

            var path = context.HttpContext.Request.Path;
            if (cacheDic.ContainsKey(path))
            {
                context.Result = (IActionResult)cacheDic[path];
            }
            else
            {
                ResourceExecutedContext resource =await next.Invoke();
                cacheDic[path] = resource.Result; // 這句話的執(zhí)行就是去執(zhí)行控制器的構(gòu)造函數(shù)+Action
                Console.WriteLine("CustomerResourceFilterAttribute.OnResourceExecutionAsync After");
            }
            

        }
    }

四、總結(jié)

不管是同步還是異步,他們的執(zhí)行順序其實(shí)都是一樣的,下面是同步和異步分別打印的日志記錄:

1、同步日志

2、異步日志

 到此這篇關(guān)于.Net Core Aop之IResourceFilter的具體使用的文章就介紹到這了,更多相關(guān).Net Core Aop IResourceFilter內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Linux服務(wù)器下利用Docker部署.net Core項(xiàng)目的全過(guò)程

    Linux服務(wù)器下利用Docker部署.net Core項(xiàng)目的全過(guò)程

    這篇文章主要給大家介紹了關(guān)于在Linux服務(wù)器下利用Docker部署.net Core項(xiàng)目的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用.net Core具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • asp.net中實(shí)體類對(duì)象賦值到表單的實(shí)現(xiàn)代碼

    asp.net中實(shí)體類對(duì)象賦值到表單的實(shí)現(xiàn)代碼

    昨天在網(wǎng)上看到了一個(gè)利用反射表單賦值到實(shí)體類對(duì)象的一個(gè)方法,自己就在加了個(gè)方法,從實(shí)體對(duì)象到表單,覺(jué)的很不錯(cuò)非常省事,所以把他寫(xiě)成了一個(gè)類,供以后使用
    2010-11-11
  • ASP.NET程序中常用代碼匯總

    ASP.NET程序中常用代碼匯總

    對(duì)于學(xué)習(xí)asp.net的朋友能用的到
    2008-11-11
  • ASP.NET Core對(duì)Controller進(jìn)行單元測(cè)試的完整步驟

    ASP.NET Core對(duì)Controller進(jìn)行單元測(cè)試的完整步驟

    這篇文章主要給大家介紹了關(guān)于ASP.NET Core對(duì)Controller進(jìn)行單元測(cè)試的完整步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用ASP.NET Core具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • c# 可變數(shù)目參數(shù)params實(shí)例

    c# 可變數(shù)目參數(shù)params實(shí)例

    一般來(lái)說(shuō),參數(shù)個(gè)數(shù)都是固定的,定義為集群類型的參數(shù)可以實(shí)現(xiàn)可變數(shù)目參數(shù)的目的,但是.NET提供了更靈活的機(jī)制來(lái)實(shí)現(xiàn)可變數(shù)目參數(shù),這就是使用params修飾符
    2012-11-11
  • Asp.Net獲取網(wǎng)站截圖的實(shí)例代碼

    Asp.Net獲取網(wǎng)站截圖的實(shí)例代碼

    這篇文章介紹了Asp.Net獲取網(wǎng)站截圖的實(shí)例代碼,有需要的朋友可以參考一下
    2013-07-07
  • Asp.net中的mail的發(fā)送

    Asp.net中的mail的發(fā)送

    Asp.net中的mail的發(fā)送...
    2006-09-09
  • 加密web.config的方法分享

    加密web.config的方法分享

    加密web.config的方法分享,需要的朋友可以參考一下
    2013-03-03
  • 詳解.NET中string與StringBuilder在字符串拼接功能上的比較

    詳解.NET中string與StringBuilder在字符串拼接功能上的比較

    string與StringBuilder的在字符串拼接時(shí)執(zhí)行效率上有差異,這篇文章主要介紹了詳解.NET中string與StringBuilder在字符串拼接功能上的比較,感興趣的小伙伴們可以參考一下
    2018-11-11
  • 判斷WebBrowser瀏覽器網(wǎng)頁(yè)加載完成的處理方法

    判斷WebBrowser瀏覽器網(wǎng)頁(yè)加載完成的處理方法

    .net 中通過(guò) SqlConnection 連接 sql server,我們會(huì)發(fā)現(xiàn)第一次連接時(shí)總是很耗時(shí),但后面連接就很快,這個(gè)其實(shí)和SqlConnection 的連接池機(jī)制有關(guān),正確的理解這個(gè)連接池機(jī)制,有助于我們編寫(xiě)高效的數(shù)據(jù)庫(kù)應(yīng)用程序。
    2013-04-04

最新評(píng)論

镇雄县| 临沂市| 塘沽区| 米脂县| 资源县| 固原市| 漳平市| 当阳市| 江安县| 金堂县| 大悟县| 寿光市| 阜南县| 北安市| 吉木萨尔县| 镇安县| 开江县| 东宁县| 綦江县| 南昌县| 新晃| 遂川县| 福鼎市| 扬中市| 光山县| 察雅县| 含山县| 永泰县| 水城县| 德阳市| 巧家县| 永福县| 延吉市| 德格县| 惠安县| 肃南| 白城市| 阿荣旗| 扎兰屯市| 南昌县| 阿拉尔市|