Response.Cache + FileStreamResult = NullReferenceException

时间:2014-05-11 16:29:50

标签: .net asp.net-mvc-4 caching filestreamresult

在我的mvc 4应用程序中,我有一个从azure blob流式传输文件的方法。

我的代码非常简单,所有我正在做的是获取我想流的blob,然后将其作为FileStreamResult返回。

return new FileStreamResult(blob.OpenRead(), contentType);

此代码工作正常。但我也想设置缓存标头,所以在我返回文件之前我设置标题如下:

Response.Cache.SetLastModified(DateTime.Now);
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetMaxAge(new TimeSpan(0, 0, 0, 80000));
Response.Cache.SetSlidingExpiration(true);

奇怪地修改Response.Cache不起作用。

所有即时通讯都是错误的:

  

对象引用未设置为对象的实例。

我确实试图找到异常的来源,但它总是在Application_EndRequest之后发生。

我真的不明白为什么设置Response.Cache会导致一切破裂。

来自stacktrace:

  

[NullReferenceException:对象引用未设置为对象的实例。] System.Web.HttpContext.RequestRequiresAuthorization()+30
  System.Web.Caching.OutputCacheModule.OnLeave(Object source,EventArgs eventArgs)+9778761 System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Exec ute()+136
  System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean& completedSynchronously)+69

我想与“Response.Cache”对象有关的东西太早了。也许我应该尝试手动设置缓存标头?

0 个答案:

没有答案