Asp.Net MVC 3部分页面输出缓存不符合配置设置
我有一个简单的局部视图,我在主视图中渲染:
@Html.Action("All","Template") 在我的控制器上我有这个: [OutputCache(CacheProfile = "Templates")] public ActionResult All() { return Content("This stinks."); } 在我的配置中: <caching> <outputCacheSettings> <outputCacheProfiles> <clear/> <add name="Templates" duration="3600" varyByParam="none"/> </outputCacheProfiles> </outputCacheSettings> <outputCache enableOutputCache="false" enableFragmentCache="false" /> </caching> 这将在运行时失败,但有异常:
内在的例外:
现在显然它没有拿起我的web.config设置,因为如果我将其更改为: [OutputCache(Duration = 3600)] 它会工作,但在我的web.config中也会注意到我关闭了enableOutputCache和enableFragmentCache,但是它没有遵循这些设置. 奇怪的是,在普通视图中这些设置工作正常,那么部分视图是什么打破了这个呢?我错过了什么吗? The Gu says this should work just fine… 解决方法
所以我花了一分钟看了MVC 3的来源.我遇到的第一件事就是这个功能看起来有些笨拙.主要是因为他们重用一个属性,在一种情况下工作,尊重所有属性和配置设置,然后在子操作方案中忽略所有这些设置,只允许VaryByParam和持续时间.
如何找出支持的内容超出了我的范围.因为除非你提供了一个持续时间和一个VaryByParam值,否则他们想抛出的异常会说永远不会抛出Unsupported Setting 这是代码的主要代码: if (Duration <= 0) { throw new InvalidOperationException(MvcResources.OutputCacheAttribute_InvalidDuration); } if (String.IsNullOrWhiteSpace(VaryByParam)) { throw new InvalidOperationException(MvcResources.OutputCacheAttribute_InvalidVaryByParam); } if (!String.IsNullOrWhiteSpace(CacheProfile) || !String.IsNullOrWhiteSpace(SqlDependency) || !String.IsNullOrWhiteSpace(VaryByContentEncoding) || !String.IsNullOrWhiteSpace(VaryByHeader) || _locationWasSet || _noStoreWasSet) { throw new InvalidOperationException(MvcResources.OutputCacheAttribute_ChildAction_UnsupportedSetting); } 我不确定为什么在documentation中没有调用它,但即使它是api也应该清楚,或者至少抛出正确的异常. 简而言之,部分输出缓存有效,但不像你想要的那样.我将努力修复代码并尊重某些设置,如启用. 更新: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – MVC4 RC WebApi参数绑定
- asp.net-mvc – Gzip压缩无法运行ASP.net MVC5
- asp.net-web-api – 从ASP.NET WebAPI 2中的头和/或查询字符
- asp.net-mvc – 在visual studio 2013中创建自定义脚手架模
- IIS7上的ASP.NET身份验证问题 – 对于Windows身份验证,User
- asp.net-mvc – 如何获取针对Razor View Engine的IntelliSe
- asp.net – 正确设置需要粘性会话的负载均衡网络?
- asp.net-mvc – 我可以在MVC3中共享创建和编辑的相同视图
- asp.net – ActiveDirectoryMembershipProvider“无法联系指
- asp.net – System.Web.Cache,会话级别或应用程序级别
- IIS ASP.Net网站 – ManagedPipelineHandler错误
- ASP.NET CORE中控制器内return HTML 内容自动编码
- .net – 动态执行剃刀视图
- asp.net – 如何从我的网站项目中删除未使用的CS
- asp.net-mvc – OnAction中的读取属性在asp.net
- asp.net – Cookie域优先?
- asp.net-mvc – 保护MVC中的文件夹
- 单元测试 – Stubbing或Mocking ASP.NET Web API
- asp.net-mvc – 如何在asp.net中使用Captcha mvc
- asp.net-mvc-3 – 用于API访问的WCF或Asp.Net MV