ASP.NET MVC の最近のバージョンには OutputCache と子アクションを組み合わせた時に、OutputCacheLocation の値を適切に見てくれないバグがありました。
例えば、グローバルフィルタで OutputCache を以下のように設定します。
// 出力キャッシュを無効化したい GlobalFilters.Filters.Add(new OutputCacheAttribute { Location = OutputCacheLocation.None });
そして、ビューで子アクションのレンダリングを行おうとすると、必ず例外が投げられます
@* ここで OutputCache の設定がおかしいと言われる *@ @Html.Action("ChildAction")
原因は子アクションの場合に OutputCache 属性が OutputCacheLocation の値をチェックせずに、常にキャッシュを行おうとすることにあります。
この問題は 1 年前にかなり大事になったバグの原因で、それ以降もいろいろと自分を困らせてくれました。なので、CodePlex に Issue の追加と Pull Request を送っておきました。
そして、それが今日 master にマージされて、5.1 ベータから直るようです。やったね。
ASP.NET MVC / Web API / Web Pages - Source Code
以前のコミットとは異なり、今回は素直にマージされているのでコミットログに名前が残ってました。こういった部分で自分の名前が残るのは嬉しいですね。
この間まで参加していた MVP Global Summit で Scott Guthrie 氏と話をした時に、これからも Windows Azure と ASP.NET へのコントリビュートを頑張りたいと約束したので、いろいろと頑張っていこうと思います。