2012-03-20 16 views
2

我使用的是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不匹配。

有沒有解決方案?或另一種方式來獲得特定的緩存頁面被驅逐?由於

回答

0

您是否嘗試過使用的VaryByParam或VaryByCustom是,用「ID」作爲您的自定義標識:http://msdn.microsoft.com/en-us/library/ms153453.aspx

+0

我已經在Page.aspx輸出頁面指令使用的VaryByParam和所有版本都正確例如緩存id = 1,id = 2等。RemoveOutputCacheItem只是不適用於任何重寫的URL。 – gices 2012-03-20 10:48:47

相關問題