ここで説明するように、web.configを介してmvc2アプリでsessionStateを無効にし、独自のcontrollerfactoryおよびダミーのtempdataプロバイダーも作成しました。
ASP.NET MVCでセッション状態を無効にするにはどうすればよいですか?
SaveTempDataが例外をスローするように作成したのは私だけです。
public void SaveTempData(ControllerContext controllerContext,
IDictionary<string, object> values)
{
throw new NotImplementedException(
"Cannot set tempdata, no session state is available.");
}
SessionオブジェクトまたはTempDataオブジェクトのいずれかを使用しているコードがないことを確認しましたが、「OnResultExecuted」イベントが発生した後もこの例外がスローされるのを確認しました。私は自分のmvc1サイトでこれとまったく同じパターンを使用していましたが、例外は見られませんでした。何か案は?
「SaveTempData」の実装を次のように変更すると、次のようになります。
public void SaveTempData(ControllerContext controllerContext,
IDictionary<string, object> values)
{
if (values.Count != 0)
{
throw new NotImplementedException(
"Cannot set tempdata, no session state is available.");
}
}
すべてが期待どおりに機能します。どこでも使用していないときにSaveTempDataが呼び出される理由を知りたいと思っています。
アップデート
この記事を発見しました:http ://www.gregshackles.com/2010/07/asp-net-mvc-do-you-know-where-your-tempdata-is/
これは、ExecuteCoreがアクションの周りでPossiblyLoadTempDataとPossiblySaveTempDataを呼び出すことを説明しています-これが私の問題の原因でした。これはmvc2とmvc1の新しい追加ですか?