Можно ли очистить кэш приложения ASP.NET без сброса домена приложения? - PullRequest
3 голосов
/ 03 февраля 2010

Я хотел бы сбросить / очистить элемент в кеше, но без перезагрузки приложения или написания специализированной страницы только для этого.непрограммное решение.Возможно ли это?

Ответы [ 3 ]

8 голосов
/ 03 февраля 2010

Краткий ответ: Нет.

ASP.NET Cache не имеет административного интерфейса для управления им.Вам нужно будет перезапустить пул приложений или создать простую страницу для удаления элементов из кэша в ASP.NET .

EDIT : Inspiredпри ответе Мика вы могли бы иметь такую ​​страницу (RemoveCache.aspx):

<%@ Page Language="C#" %>
<script runat="server">

    void Page_Load(object sender, EventArgs e)
    {
        if (String.IsNullOrEmpty(Request.QueryString["name"]))
        {
            foreach (DictionaryEntry item in Cache)
            {
                Cache.Remove(item.Key.ToString());
                Response.Write(item.Key.ToString() + " removed<br />");
            }
        }
        else
        {
            Cache.Remove(Request.QueryString["name"]);
        }
    }

</script>

Если вы позвоните RemoveCache.aspx, весь ваш кеш будет удален;под управлением RemoveCache.aspx?name=Products, только Products запись в кеше будет удалена.

2 голосов
/ 18 января 2011
            Dim CacheKeys As New List(Of String)
            For Each CacheItem As DictionaryEntry In Cache
                CacheKeys.Add(CacheItem.Key)
            Next

            For Each Key As String In CacheKeys
                Cache.Remove(Key)
            Next

Похоже, что он проходит через кеш и очищает элементы, но не очищает кэш ответов. Если вы авторизуетесь на веб-странице с помощью FormsAuthentication, перейдите на веб-страницу, выйдите из системы и просто введите этот URL в адресную строку, после чего вы вернетесь на эту страницу. Когда вы нажимаете на что-либо, вы возвращаетесь на страницу входа в систему, потому что вы не аутентифицированы, но страница по-прежнему отображается из кэша, даже если кэш очищается при нажатии кнопки выхода из системы. Установка Cachability для NoCache не работает, потому что все GridViews, которые используют событие DataBound, показывают как истекший при использовании кнопки назад. Я все еще ищу подходящее решение для очистки кэша для этого случая.

1 голос
/ 03 февраля 2010

Имеется только код VB.NET, но почему бы не перебрать кеш, удаляя элементы?

For Each de As DictionaryEntry In HttpContext.Current.Cache

HttpContext.Current.Cache.Remove(DirectCast(de.Key, String))

Next

Привет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...