asp.net-mvc – 使用输出缓存和其他动作过滤器
我已经在我的应用程序中添加了“输出缓存”,以实现一些简单的性能提升.但是,这些操作还需要在每个请求之后增加一个计数器(它是一个视图计数器),方法是点击一个Redis db.
起初,我想我可以调整操作过滤器执行的顺序,以确保视图被计数: public class CountersAttribute : ActionFilterAttribute { public override void OnResultExecuted(ResultExecutedContext filterContext) { //increment my counter all clever like base.OnResultExecuted(filterContext); } } 但那没有办法显然OutputCacheAttribute的行为不像正常的动作过滤器.然后我尝试实现自定义输出缓存: public class OutputCacheWithCountersAttribute : OutputCacheAttribute { public override void OnResultExecuted(ResultExecutedContext filterContext) { //straight to the source to get my headcount! base.OnResultExecuted(filterContext); } } 不,也不行一旦缓存了一个动作,操作过滤器就会被完全忽略.游民. 那么,呃,有没有办法(没有实现一个自定义的输出缓存提供程序),以确保我的意见被正确地计数是干净和明智的? 解决方法
OutputCacheAttribute有一些限制,并且有一个由Paul Hiles开发的名为
DonutOutputCache的自定义属性帮助克服了这些限制.
它支持的一个重要功能就是可以使用一个动作过滤器,即使动作标记有缓存属性也可以一直调用. 例如您希望缓存一段时间为5秒的动作,同时您希望在每次使用LogThis过滤器接收到请求时记录,您可以通过以下方式实现该操作, [LogThis] [DonutOutputCache(Duration=5,Order=100)] public ActionResult Index() 从Paul,
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-web-api – ApiController的异步方法 – 什么是利润
- asp.net-mvc – MVC DB首先修复显示名称
- 为什么VS 2013将ASP.NET MVC 4 web.config复制到bin并重命名
- asp.net-mvc – Asp.Net MVC2 RenderAction更改页面mime类型
- Asp.net形成认证cookie,不符合IIS7超时
- ASP.NET是否需要ActiveX?
- Azure vs WCF vs ASP.NET vs …它如何组合在一起?
- 从.NET开始 – ASP.NET,WPF,Silverlight或命令行C#?
- ASP.NET MVC应用程序如何严重依赖于System.Web程序集?
- ASP.net缓存访问导致foreach循环中的Collection Modified异
- ASP.NET Core 2.0 使用支付宝PC网站支付实现代码
- asp.net 汉字转换拼音及首字母实现代码
- asp.net – 如何在查询字符串中传递’#’
- 深蓝词库转换1.7发布,支持QQ分类词库解析
- asp.net-mvc – 使用SimpleInjector为AccountCon
- asp.net-mvc – 如何在ASP.NET MVC路由中使用带有
- asp.net – 文件 – >在MonoDevelop中打开网站?
- asp.net-mvc – 错误System.Web.HttpCompileExce
- 如何在asp.net中编写javascript代码后面使用C#
- asp.net – 如何更改F#Canopy UI测试脚本中的下拉