2

我有一个 ASP.NET MVC 控制器操作,如下所示:

[HttpGet]
[DonutOutputCache(CacheProfile = "banner")] 
public async Task<ActionResult> Banner(string name, string size = "lg")
{
    // snipped - work out which banner to show today.

    return File(thePathToSomeBannerImageFile, "image/jpeg");
}

配置文件如下所示:

<caching>
  <outputCacheSettings>
    <outputCacheProfiles>
      ...
      <add name="banner" duration="31536000" varyByParam="*" />
      ...
    </outputCacheProfiles>
  </outputCacheSettings>
</caching>

由于将DonutOutputCache我用来渲染的图像添加到我的浏览器现在不会加载。我可以在 Fiddler 跟踪中看到一个较大的二进制文件正在进入浏览器,但我似乎无法让它呈现。

删除DonutOutputCache使图像再次出现。

我试过清除缓存等。有什么想法吗?

4

1 回答 1

2

啊,刚刚从这个链接中弄清楚了:不使用文件吗?.

基本上在内部DonutOutputCache使用ContentResult,它仅适用于基于文本的内容。由于我在FileResult中返回二进制响应,所以它搞砸了。幸运的是,它与内置的 一起工作OutputCache,所以我可以如下修改我的操作,它按预期工作。我真的只需要DonutOutputCache基于文本的网站的其他部分。我试图只使用一个缓存属性来统治它们,我绊倒了自己。

[HttpGet]
[OutputCache(CacheProfile = "banner")] 
public async Task<ActionResult> Banner(string name, string size = "lg")
{

}
于 2014-12-22T10:30:39.703 回答