3

在我的 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.Exec‌​ute() +136
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +69

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

4

0 回答 0