Необработанное исключение CachedRawResponse asp.net

2

Невозможно наложить объект типа "System.Web.Caching.CachedRawResponse" на тип "System.Web.Caching.CachedVary".

Я получаю это на вызов AJAX на странице aspx и не могу найти никакой информации об этом в веб-сайте. CachedRawResponse даже не на MSDN. Кто-нибудь знает что-нибудь об этом или может указать мне в правильном направлении?

Теги:
exception
iis-6

1 ответ

1

У нас недавно была та же проблема, и оказалось (в нашем случае), что модуль кэша вывода страницы довольно чувствителен к тому, как вы устанавливаете свои свойства Response.Cache.VaryByXyz. В нашем модуле сжатия HTTP мы использовали следующий код:

if (IsBrowserSupported(userAgent))
{
    Response.Cache.VaryByHeaders["Accept-Encoding"] = true;
    ...
}

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

Не устанавливая VaryByXyz, заставляет CachedRawResponse хранить в кэше вывода ASP.NET, но если вы зададите любой VaryByXyz во время вашего запроса, ASP.NET ожидает CachedVary в этом месте. И вместо проверки того, является ли кешированная страница нужного типа, структура просто отличает, в результате получается InvalidCastException.

Мораль истории: всегда устанавливайте VaryByXyz последовательно, независимо от заголовков запроса или других переменных, не связанных с запросом. В нашем случае размещение VaryByHeaders вне if разрешило ошибку.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню