news 2026/7/6 3:58:06

ASP.NET MVC实践系列9-filter原理与实践

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ASP.NET MVC实践系列9-filter原理与实践

我们先来看看ASP.NET MVC 框架提供的几种默认filter类型:
1、Authorize:

准备工作:进入C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727文件夹,双击aspnet_regsql.exe选择好相应的数据库,创建membership,AuthorizeAttribute使用membership来进行权限验证的,所以我们需要先在membership中准备一个用户lfm,一个角色Admin,我们使用studio的项目-》ASP.NET配置创建即可。

[Authorize(Roles="Admin")]
public ActionResult Index()
{
ViewData["Message"] = "Welcome to ASP.NET MVC!";

return View();
}

如果lfm不属于Admin角色时Index页是不能访问的

2、OutputCache:

[OutputCache(Duration=60, VaryByParam="none")]
public ActionResult About()
{
return View();
}

然后我们修改About加入:

<%=DateTime.Now.ToString() %>

我们会发现在一分钟内我们刷新About页面其输出并不改变。这个和webform中的页面缓存机制非常相似。

这里我们也可以统一的配置时间和条件

配置文件

Controler中输入

[OutputCache(CacheProfile="MyProfile")]
public ActionResult About()
{
return View();
}

3、Exception

Exception

标明HandleError属性后的Action,当内部出现异常时会根据异常类型跳转到相应的View,这里需要注意的是上面的源码在开发期无法看到效果,必须部署到iis上才能看到效果。实际上这个简单处理在项目中用处不大,一般我们都会写自己的异常处理方式,自定义异常处理我们一会再自定义filter中讲解。

二、自定义filter实例:

我们先来看一下跟filter相关的类结构:

一般情况下我们自定义的filter都是继承FilterAttribute类然后再扩展相应的接口的,下面我们举几个例子:

1、自定义异常处理

自定义异常处理

使用

Controller

浏览器中输入:http://localhost:3983/Home/GetView

这样我们就可以根据自己的项目情况来处理异常了。

2、监控Action运行时间的Timer

TimerAttribute

使用

[Timer]
public ActionResult TestTimer()
{
Thread.Sleep(100);
return View();
}

页面显示:

<%=ViewData["__Duration"]%>

三、filter相关接口方法的执行顺序:

根据上面的结构图我们知道跟filter相关的总共有四个接口,六个方法,这些方法如果在同一个类中实现时是有个优先级顺序的

IAuthorizationFilter>IActionFilter>IResultFilter>IExceptionFilter
接下来我们写个程序来验证这个顺序:

TestOrder属性类

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/6 3:57:12

PowerShell 路径规则详解:从基础到高级

1. 引言在 Windows 系统管理和自动化脚本编写中&#xff0c;PowerShell 是功能强大的工具。无论是访问文件、加载模块&#xff0c;还是执行脚本&#xff0c;都离不开对路径的正确理解和处理。PowerShell 的路径规则与传统的 CMD 有所不同&#xff0c;它更灵活&#xff0c;但也更…

作者头像 李华
网站建设 2026/7/6 3:56:47

126、DyHead 动态检测头替换 YOLOv11 Head:Scale+Space+Task 三维注意力的实现

126、DyHead 动态检测头替换 YOLOv11 Head:Scale+Space+Task 三维注意力的实现 从一次诡异的mAP抖动说起 去年年底调YOLOv11的C2f模块,发现一个奇怪现象:换了几种注意力机制,mAP@0.5:0.95始终在0.523附近震荡,死活上不去。后来扒开特征图一看,深层小目标特征被背景噪声…

作者头像 李华
网站建设 2026/7/6 3:55:44

Google chrome OS vmdk文件在WMware下运行的办法

大家将从官方下好的280M的压缩包解压&#xff08;有一个720M的文件 本人解压后只有712M&#xff09; 2、使用WMware新建一个虚拟文件&#xff0c;就像装Windows前一样&#xff0c;你得先在WMware下新建一个安装环境&#xff08;不明白的可以直接使用CtrlN新建&#xff09; 3、…

作者头像 李华
网站建设 2026/7/6 3:55:12

用虚拟机实际体验Google Chromium OS (Chrome OS) Pre-Built

Windows XP/2003&#xff08;其他版本未测试过&#xff0c;但不代表不可以使用&#xff09;Sun VirtualBox 下载地址&#xff1a;http://www.virtualbox.org/wiki/DownloadsGoogle Chromium OS Pre-Built VMDK Image 下载地址&#xff08;注&#xff1a;在任何一个地址下载都可…

作者头像 李华
网站建设 2026/7/6 3:55:08

从 Agent Memory 到 Object-Scoped Context 的思考

Long-term Memory但我越来越觉得&#xff1a;业界很多框架&#xff0c;其实还没有真正抓住 “上下文&#xff08;Context&#xff09;” 的本质。它们正在朝正确方向前进&#xff0c;但很多设计仍然默认&#xff1a;Context ≈ Agent 的记忆而我认为&#xff1a;Context 本质上…

作者头像 李华
网站建设 2026/7/6 3:46:19

Biotin-PEG4-oxyamine HCl salt,生物素-四聚乙二醇-氧胺盐酸盐

基础信息化学名称&#xff1a;生物素-四聚乙二醇-氧胺盐酸盐分子式&#xff1a;C₂₀H₃₈N₄O₇S分子量&#xff1a;478.61结构组成&#xff1a;由生物素&#xff08;Biotin&#xff09;、四聚乙二醇&#xff08;PEG4&#xff09;、羟胺&#xff08;Oxyamine&#xff09;三个功…

作者头像 李华