Response.Cache + FileStreamResult = NullReferenceException

В моем приложении MVC 4 у меня есть метод, который потокового файла из лазурного 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 (Источник объекта, EventArgs eventArgs) +9778761 System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Exec‌ ute () +136
System.Web.HttpApplication.ExecuteStep (шаг IExecutionStep, логическое и завершено синхронно) +69

Я предполагаю, что что-то, что связано с объектом Response.Cache, расположено слишком рано. Может, стоит попробовать установить заголовки кеша вручную?

0 ответов

Другие вопросы по тегам