Asp.net 缓存在 IIS 上不起作用。 IIS上有没有设置

Posted

技术标签:

【中文标题】Asp.net 缓存在 IIS 上不起作用。 IIS上有没有设置【英文标题】:Asp.net cache not working on IIS. Is there any setting on IIS 【发布时间】:2021-10-18 09:57:43 【问题描述】:

我创建了一个如下所示的基本缓存示例。当我发布到本地 IIS 时,我的代码运行良好。但是,当我发布我的真实服务器时无法正常工作。没有任何错误。但是缓存总是空的。 这可能是什么原因? IIS 或其他 Windows 配置中是否有任何设置?

using System;
using System.Runtime.Caching;
using System.Web.Http;

namespace ToplumMerkezleriCommonApi.Controllers

    public class ValuesController : ApiController
    
        protected ObjectCache Cache => MemoryCache.Default;
        protected CacheItemPolicy policy = null;

        public object Get(string id)
        
            if (Cache.Get("testcache") == null)
            
                GetAllCacheItems();
            
            return Cache[id] as Object;
        

        private void GetAllCacheItems()
        
            using (CommunityCenterEntities context = new CommunityCenterEntities())
            
                policy = new CacheItemPolicy();
                policy.AbsoluteExpiration = DateTimeOffset.Now.AddHours(24);

                Cache.Set("testcache", DateTime.Now.ToString(), policy);
            
        
    

【问题讨论】:

***.com/questions/5306126/… 感谢您的回复@LexLi。我现在尝试使用 HttpContext.Cache。但是,结果没有改变。它不工作 我认为this post 可能会帮助您解决问题。请检查帖子答案中提到的要点(<clientcache>部分,启用Web浏览器缓存,使用FRT检查缓存是如何生成的)。 感谢您的回复@HuryShen。我尝试了帖子上的设置。但没用 由于所有建议/解决方案都无法解决您的问题,我认为您可以在this link 上创建支持以向微软工程师寻求帮助。 【参考方案1】:

请检查,转到 IIS 管理器->站点节点->输出缓存->编辑功能设置->取消选中启用缓存 和 对于静态文件,启用 IIS manager->site node->HTTP Response header->Set common headers->expire web content->immediately。

【讨论】:

感谢您的回复。我现在尝试了这个设置。但是,结果没有改变。它不工作【参考方案2】:

我发现了问题。问题是防病毒。我们的防病毒软件正在删除静态变量和缓存值。因此,当我关闭防病毒软件时,缓存起作用了。

【讨论】:

以上是关于Asp.net 缓存在 IIS 上不起作用。 IIS上有没有设置的主要内容,如果未能解决你的问题,请参考以下文章

QueryStringParameters 在 ASP.Net objectDataSource 上不起作用

Bootstrap CSS 在 ASP.net 上不起作用

FileUpload.PostedFile.SaveAs() 在实时网站 asp.net 上不起作用

ASP.NET Core 2.2 - 密码重置在 Azure 上不起作用(无效令牌)

ASP.net 缓存绝对过期不起作用

URL 重写在 IIS 7 上不起作用