HttpContext.Current.Items内に保存する EF4 オブジェクト コンテキストの問題に直面しており、リクエストが完全に処理されたらすぐに破棄したいと考えています。
Aplication_EndRequest イベントで、 HttpContext.Current.ItemsコレクションからアクティブなObjectContextを検索する RepositoryContext の Terminate() メソッドを呼び出し、その接続でClose()を呼び出し、それでDispose()を呼び出します。
問題は、自分のページの 1 つで奇妙な動作をすることがあるということです。場合によっては、次のようなエラーが表示されます。
ObjectContext インスタンスは破棄され、接続を必要とする操作には使用できなくなりました
ページリクエストが終了したら Application_EndRequest イベントを呼び出すだけでなく、画像リクエストなども呼び出すため、おそらくこれが発生する可能性があると考えました。もちろんHTTPリクエスト間で共有されないコレクションHttpContext.Current.Itemsですべてが作成されるため、発生しません。
また、調査によると、一部の db リクエストの遅延読み込みが原因である可能性がありますが、コードの他の場所で Dispose を呼び出さないため (確認済み)、EndRequest の Dispose() を呼び出す必要があるため、ここではそうではありません。すべてが終了したときにのみ呼び出されますよね?
これを引き起こす原因についてのアイデアはありますか?どうすればテストできますか?あなたは何を提案しますか?
ありがとう!