为什么OutputCache是??ASP.NET MVC中的结果过滤器而不是动作过滤
发布时间:2020-12-16 07:19:55 所属栏目:asp.Net 来源:网络整理
导读:OutputCache属性通常作为ASP.NET MVC中结果过滤器的示例给出. This MSDN page是一个地方.因此它包装了ActionResult对象的执行.但是,在动作方法结束时执行的对象不是吗?我很困惑它如何允许使用缓存的响应,并且如果它只在该方法结束时包含ActionResult的执行,
OutputCache属性通常作为ASP.NET MVC中结果过滤器的示例给出.
This MSDN page是一个地方.因此它包装了ActionResult对象的执行.但是,在动作方法结束时执行的对象不是吗?我很困惑它如何允许使用缓存的响应,并且如果它只在该方法结束时包含ActionResult的执行,则会阻止操作本身执行.我知道缓存有效,所以显然有一些我不知道的明显部分.
解决方法
OutputCacheAttribute继承自ActionFilterAttribute,后者又实现IActionFilter和IResultFilter.因此,OutputCacheAttribute既是动作过滤器又是结果过滤器.
当你考虑它时,这是完全合理的.缓存背后的逻辑如下: >执行时 >缓存中的项目是? >得到结果 >放入缓存 因此,第1部分由IActionFilter的实现处理,如果它不立即返回结果,我们继续执行操作并且IResultFilter的实现处理将该结果添加到缓存以供将来调用. 由于ASP.NET是开源的,这可以在代码中得到确认.查看 >第222行是在OnActionExecuting期间检查cahce的地方(IActionFilter的一部分)>第237行 – 第249行OnActionExecuting方法设置一个在OnResultExecuted(IResultFilter的一部分)期间调用的回调 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net mvc 之旅—— 第一站 从简单的razor入手
- 为什么Request.IsAjaxRequest()在ASP.NET MVC 3中不起作用?
- 如何在asp经典中使用cURL发布数据?
- ASP.NET网站项目何时重新编译?
- asp.net-mvc – 如何在ASP.NET MVC中使用编译的全局资源
- Asp.NET Core+ABP框架+IdentityServer4+MySQL+Ext JS之文章
- asp.net-identity – EF7标识不加载用户扩展属性
- asp.net – Google协议缓冲区或.net / javascript类似的东西
- oauth-2.0 – 在MVC6应用程序中的OAuth令牌到期
- asp.net – PostBackUrl在Html按钮上不可用
推荐文章
站长推荐
- asp.net-mvc – 使用实体框架的没有存储库模式的
- asp.net-identity-2 – Asp.Net身份保存用户没有
- asp.net – Silverlight调试期间的Web服务超时
- asp.net – 无法安装Microsoft.AspNet.Razor 3.0
- asp.net-mvc – 如何修复错误名称空间’System’
- asp.net-mvc-3 – MVC 3 Webgrid使整行可点击
- .Net Core in Docker极简入门(上篇)
- asp.net-mvc – 从ASP.NET MVC 3中的RequiredAtt
- asp.net-mvc – 如何在ELMAH中连接自定义电子邮件
- 在ASP.net中为按钮应用皮肤文件
热点阅读