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, расположено слишком рано. Может, стоит попробовать установить заголовки кеша вручную?