我使用的是asp.net 4.0(Web Forms網站),並且實現了基於自定義磁盤的輸出提供程序,該緩存在我的網站上緩存頁面時正常工作。然而,我得到的問題是,我找不到從緩存中刪除特定頁面的方法,我懷疑這是Url Rewriting的問題。在asp.net中從自定義緩存輸出提供程序中刪除特定頁
舉例來說,如果我有一個名爲Test.aspx的頁面,我可以輕鬆地從緩存中使用remove:
HttpResponse.RemoveOutputCacheItem("/test.aspx");
這並不適用於被輸出通過ID緩存雖然如http://www.example.com/page/1頁工作被重寫爲http://www.example.com/myfolder/Page.aspx?id=1
我可以看到緩存版本的頁面,但我無法從磁盤緩存中刪除它,因爲我需要一個絕對虛擬路徑來讓RemoveOutputCacheItem工作。我試過以下內容:
HttpResponse.RemoveOutputCacheItem("/myfolder/Page.aspx?id=1");
HttpResponse.RemoveOutputCacheItem("/myfolder/page/1");
和很多其他的變化,但似乎沒有任何工作。
嘗試使用RemoveOutputCacheItem時,URL的緩存鍵與存儲的鍵a2_myfolder_page.aspxHQNidV1FCDE不匹配。
有沒有解決方案?或另一種方式來獲得特定的緩存頁面被驅逐?由於
我已經在Page.aspx輸出頁面指令使用的VaryByParam和所有版本都正確例如緩存id = 1,id = 2等。RemoveOutputCacheItem只是不適用於任何重寫的URL。 – gices 2012-03-20 10:48:47