3

私の mvc 4 アプリケーションには、紺碧のブロブからファイルをストリーミングするメソッドがあります。

私のコードは非常に単純です。ストリームしたいブロブをフェッチして、それを 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 step, Boolean& completedSynchronously) +69

「Response.Cache」オブジェクトに関係する何かが破棄されるのが早すぎると思います。キャッシュヘッダーを手動で設定してみるべきでしょうか?

4

0 に答える 0