如果控制器操作具有在操作上指定的OutputCache屬性,是否有任何方法可以清除輸出緩存而不必重新啟動IIS?[OutputCache (Duration=3600,VaryByParam="param1;param2")]public string AjaxHtmlOutputMethod(string param1, string param2){ var someModel = SomeModel.Find( param1, param2 ); //set up ViewData ... return RenderToString( "ViewName", someModel );}我正在尋找HttpResponse.RemoveOutputCacheItem(string path)用于清除它的方法,但是在弄清楚將其映射到操作方法的路徑時遇到了麻煩。我將再次嘗試使用由ViewName呈現(xiàn)的aspx頁面。也許我只是手動插入的輸出RenderToString入HttpContext.Cache,而是如果我不明白這一個。更新資料請注意,OutputCache是VaryByParam,測試硬編碼路徑“ / controller / action”實際上并不會清除outputcache,因此看起來它必須匹配“ / controller / action / param1 / param2”。這意味著我可能不得不恢復(fù)到對象級緩存,并手動緩存RenderToString():(
3 回答

郎朗坤
TA貢獻1921條經(jīng)驗 獲得超9個贊
嘗試這個
var urlToRemove = Url.Action("AjaxHtmlOutputMethod", "Controller");
HttpResponse.RemoveOutputCacheItem(urlToRemove);
更新:
var requestContext = new System.Web.Routing.RequestContext(
new HttpContextWrapper(System.Web.HttpContext.Current),
new System.Web.Routing.RouteData());
var Url = new System.Web.Mvc.UrlHelper(requestContext);
更新:
嘗試這個:
[OutputCache(Location= System.Web.UI.OutputCacheLocation.Server, Duration=3600,VaryByParam="param1;param2")]
否則,緩存刪除將無法進行,因為您已將HTML輸出緩存在用戶計算機上
- 3 回答
- 0 關(guān)注
- 600 瀏覽
添加回答
舉報
0/150
提交
取消