在我的 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
会导致一切崩溃。
从堆栈跟踪:
[NullReferenceException:对象引用未设置为对象的实例。] System.Web.HttpContext.RequestRequiresAuthorization() +30
System.Web.Caching.OutputCacheModule.OnLeave(Object source, EventArgs eventArgs) +9778761 System.Web.SyncEventExecutionStep。 System.Web.HttpApplication.IExecutionStep.Execute() +136
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +69
我猜想与“Response.Cache”对象有关的东西处理得太早了。也许我应该尝试手动设置缓存头?