Необработанное исключение CachedRawResponse asp.net
Невозможно привести объект типа "System.Web.Caching.CachedRawResponse" к типу "System.Web.Caching.CachedVary".
Я получаю это на AJAX-вызове на страницу aspx и не могу найти информацию об этом в веб-мире. CachedRawResponse даже не на MSDN. Кто-нибудь что-нибудь знает об этом, или, может быть, указывает мне правильное направление?
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
решил ошибку.