输出高速缓存未使用必需参数的variablebyparam删除mvc

时间:2019-07-06 07:16:26

标签: .net asp.net-mvc asp.net-mvc-5 outputcache

我有以下操作方法

   public async System.Threading.Tasks.Task<ActionResult> selectaddetails(int adid=0,int lid = 0, string catm = "",int catid=0, string searchTxt = "",string code="") 
      {...}

我正在使用此属性对其进行缓存

   [OutputCache(Duration = 60 * 60 * 24 * 100, VaryByParam = "adid")]

因此,在创建记录时,会填充selectaddetails的参数并将其重定向到该动作selectaddetails,然后再将带有参数的URL保存在xml文件中。相同的网址,该网址用于缓存带有参数的页面。

我正在删除输出缓存链接

 XmlDocument doc = new XmlDocument();
                doc.Load(Server.MapPath("../forDelete.xml"));

                XmlElement root = doc.DocumentElement;
                XmlNodeList nl = root.ChildNodes;
                XmlNode x = nl.Cast<XmlNode>().Where(w => w.Attributes["adid"].InnerText == adid.ToString()).FirstOrDefault();
                if (x != null)
                {
                    string url = HttpUtility.UrlDecode(x.Attributes["url"].InnerText);
                    HttpResponse.RemoveOutputCacheItem("/"+url);
                }

删除缓存时使用的url与操作首次命中(并保存输出缓存)时的url相同。但是网址的缓存不会删除。我在做什么问题。

我将vardbyparam用于必填参数adid,而不是用于option参数。任何帮助将不胜感激。

注意:我不想为可选参数使用variablebyparam,因为可选参数可以是任何东西。

谢谢

0 个答案:

没有答案