2012-03-20 3 views
2

Я использую asp.net 4.0 (веб-сайт форм), и я внедрил собственный поставщик выходных данных на основе дисков, который отлично работает при кешировании страниц на моем сайте , Проблема, которую я получаю, заключается в том, что я не могу найти способ удалить определенную страницу из кеша, и я подозреваю, что это проблема с Url Rewriting.Удаление определенной страницы из поставщика выходных данных пользовательского кэша в asp.net

Например, если у меня есть страница под названием test.aspx, я могу легко удалить его из кэша с помощью:

HttpResponse.RemoveOutputCacheItem("/test.aspx"); 

Это не работает на странице, которая выводится через кэшированных ид, хотя, например, 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"); 

И много других вариантов, но ничего не работает.

Кэшированный ключ для URL-адреса не совпадает с сохраненным ключом a2_myfolder_page.aspxHQNidV1FCDE при попытке использовать RemoveOutputCacheItem.

Есть ли решение для этого? Или другой способ, чтобы вырезать определенные кешированные страницы? Благодаря

ответ

0

Вы пробовали с помощью VaryByParam или VaryByCustom, а также использовать «ID» в качестве пользовательского идентификатора: http://msdn.microsoft.com/en-us/library/ms153453.aspx

+0

Я уже использую VaryByParam в директиве Output страницы на Page.aspx и все версии кэшируются правильно, например, id = 1, id = 2 и т. д. RemoveOutputCacheItem просто не работает для переписанных URL-адресов. – gices