在我的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”对象有关的东西太早了。也许我应该尝试手动设置缓存标头?