欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

一、簡介

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

  • 1、AuthorizeAttribute(權限驗證)
  • 2、IResourceFilter(資源緩存)
  • 3、IActionFilter(執(zhí)行方法前后的記錄)
  • 4、IResultFilter(結果生成前后擴展)
  • 5、IAlwaysRun(響應結果的補充)
  • 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} 構造函數(shù)");
        }

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

3、前端頁面代碼

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


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

4、頁面效果

按F5可以看到頁面值的變化效果,"來自于控制器的結果"的值會一直不變,“來自于頁面的結果”隨著頁面刷新,值會一直變化

三、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í)行控制器的構造函數(shù)+Action
                Console.WriteLine("CustomerResourceFilterAttribute.OnResourceExecutionAsync After");
            }
            

        }
    }

四、總結

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

1、同步日志

2、異步日志

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

相關文章

  • Entity Framework使用Code First模式管理視圖

    Entity Framework使用Code First模式管理視圖

    本文詳細講解了Entity Framework使用Code First模式管理視圖的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • 關于服務器或虛擬主機不支持 AjaxPro 的問題終極解決方法

    關于服務器或虛擬主機不支持 AjaxPro 的問題終極解決方法

    asp.net的網(wǎng)站,訪問時提示不支持 AjaxPro,那就因為誤刪的映射導致,可以通過下面的方法解決
    2012-03-03
  • Asp.Net二級域名共享Forms身份驗證、下載站/圖片站的授權訪問控制

    Asp.Net二級域名共享Forms身份驗證、下載站/圖片站的授權訪問控制

    我們平時一般在做圖片或者文件下載權限控制的時候基本都是控制到下載頁面的,當你的下載地址暴露后,瀏覽者就直接可以通過文件地址進行下載了,這時候也就出現(xiàn)了我們常說的盜鏈
    2012-02-02
  • .Net集成敏感詞組件的步驟

    .Net集成敏感詞組件的步驟

    現(xiàn)如今大部分服務都會有用戶輸入,為了服務的正常運行,很多時候不得不針對輸入進行敏感詞的檢測、替換。如果人工做這樣的工作,不僅效率低,成本也高。水弟在這里寫了一個讓小編姐姐都覺得快的敏感詞組件接入示例,不需要依賴第三方服務,只需兩分鐘即可享受清爽文字。
    2021-05-05
  • 詳解.net core日記記錄

    詳解.net core日記記錄

    這篇文章主要介紹了.net core的日記記錄,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • ASP.NET對HTML頁面元素進行權限控制(三)

    ASP.NET對HTML頁面元素進行權限控制(三)

    界面每個元素的權限也是需要控制的。比如一個查詢用戶的界面里面有查詢用戶按鈕,添加用戶按鈕,刪除用戶按鈕,不同的角色我們得分配不同的權限
    2013-12-12
  • asp.net 去除viewstate

    asp.net 去除viewstate

    生成了這么多的一段東西,這段東西對seo一點好處也沒有。而我要做的就是去掉它,但有一點,去掉但不能讓它原來的控件和內(nèi)容都發(fā)生變化
    2009-03-03
  • ASP.NET設計網(wǎng)絡硬盤之兩重要類代碼

    ASP.NET設計網(wǎng)絡硬盤之兩重要類代碼

    要進行“網(wǎng)絡硬盤”功能設計,首先要熟悉.NET中處理文件和文件夾的操作。File類和Directory類是其中最主要的兩個類。了解它們將對后面功能的實現(xiàn)提供很大的便利
    2012-10-10
  • Repeater里switch的使用方法

    Repeater里switch的使用方法

    在Repeater里,有多個判斷的情況下,如果使用switch呢?直接看下面的例子:
    2013-04-04
  • C#中Dictionary幾種遍歷的實現(xiàn)代碼

    C#中Dictionary幾種遍歷的實現(xiàn)代碼

    C#中Dictionary幾種遍歷的實現(xiàn)代碼,需要的朋友可以參考一下
    2013-02-02

最新評論