0
MVCコントローラとWebApiコントローラの両方を持つプロジェクトがあります。私はSystem.Web.HttpContext.Current.Cacheを使用していくつかの静的データを格納しているので、すべての要求に対してデータベースから取得されません。 WebApiコントローラには、MVCコントローラによってキャッシュされたデータが表示されないようです。彼らはSystem.Web.HttpContext.Current.Cacheの別のインスタンスを使用していますか?ASP.NET:MVCとWebApiコントローラ間でHttpContext.Current.Cacheを共有する
おかげで、 バート・ヤン
MVC/Web APIでは、静的な 'System.Web.HttpContext.Current'インスタンスを決して参照しないでください。コントローラ/フィルタに渡されるラップされた 'HttpContextBase'インスタンスだけを使用してください。私はこれがあなたの問題を解決するかどうかは分かりません。 – NightOwl888
ありがとうございます。私はいくつかのテストを実行し、このキャッシュはWebApiとMVCコントローラで利用可能で、互いにキャッシュされたアイテムを見ることができます。私は間違っていた。ラップされたHttpContextBaseを指摘してくれてありがとう。興味のないもの:静的インスタンスを参照する際の危険は何ですか? –
主な問題は、スタティック・メソッド - タイト・カップリングを参照する場合と同じです。例えば、静的 'System.Web.HttpContext.Current'インスタンスをユニットテストでモックする方法はありませんが、' HttpContextBase'をモックできます。言うまでもなく、MVC *はラッパーを介して渡される値の一部を変更する可能性があります - 参照しない場合、アプリケーションに微妙なバグが入る可能性があります。 – NightOwl888