我有以下操作方法
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,因为可选参数可以是任何东西。
谢谢