【问题标题】:Unhandled Exception CachedRawResponse asp.net未处理的异常 CachedRawResponse asp.net
【发布时间】:2009-05-27 17:57:20
【问题描述】:

无法将“System.Web.Caching.CachedRawResponse”类型的对象转换为“System.Web.Caching.CachedVary”类型。

我在对 aspx 页面的 AJAX 调用中收到此信息,但在 webland 中找不到有关它的信息。 CachedRawResponse 甚至不在 MSDN 上。有谁知道这件事,或者可能指出我正确的方向?

【问题讨论】:

    标签: c# asp.net exception iis-6


    【解决方案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 之外解决了这个错误。

    【讨论】:

      猜你喜欢
      • 2010-10-29
      • 2012-07-26
      • 1970-01-01
      • 2013-11-28
      • 2014-06-18
      • 1970-01-01
      • 1970-01-01
      • 2011-11-19
      相关资源
      最近更新 更多