2009-03-12 6 views
0

私のプロジェクトでは奇妙な問題に直面しています。私のアクションは、Request.Paramsにある実際の値の代わりに古いparam値を取得しています。それを説明するHomeController.Echo(文字列テキスト)アクションを作成しました(スクリーンショットを参照)。初めて "Home/Echo?text = aaa"のようなアクションを呼び出すと、すべて正常に動作します。別のテキスト値( "Home/Echo/text = bbb")で同じアクションを2回目に呼び出すと、アクション "text"パラメータに古い "aaa"値が再び表示されます。奇妙なのは、Request.Paramsに正しい "bbb"値が含まれていると思います。ASP.Net MVC - 奇妙なパラメータのキャッシュアクションの動作

私は自分自身を壊すかもしれない何かがあると思っていますが、何かを理解することはできません。私はIoCコンテナからコントローラを提供しています.ContentActionInvoker.InvokeActionMethodWithFiltersメソッド(IoCのフィルタに依存関係を注入するため)をオーバーライドし、HttpApplication.AuthenticateRequestを処理しています。 Im'not結合とにかくこれらのいずれかでのparams/...

screenshot

答えて

1

この問題はおそらくスレッドの問題によって引き起こされたと思われます。IoCコンテナのコントローラを要求ライフサイクルごとに登録することを忘れていました(シングルトンとして登録されていました)。

0

での作業あなたは値がスイッチアウトなっている場所を確認するためにアプリケーションを介してデバッグしています。テキスト変数(コード内で何を呼び出すか)を簡単に監視すると、変数が変更される場所がわかります。実行するコードがなければ、私はそれが起こっているところを知りません。

私はテストを書くと言いますが、ここでもUIが干渉する可能性があります。コード内のどこが変化しているのか分かっている場合は、バグを確認するためのテストを作成し、そのバグを突き止めます。

0

あなたが問題を特定するまで、あなたが上書きしたすべての方法をコメントすることをお勧めします。最悪の場合、ASP.NET MVCウィザードは、プロジェクトを作成したとき、およびパラメータバインディングが確実に機能していた時点でプロジェクトを終了します。

+0

IoCコンテナからコントローラを提供するために使用しているMvcContrib.Castle.WindsorControllerFactoryが原因です。 ControllerBuilder.Current.SetControllerFactory()の行をコメントアウトすると、パラメータは正常に動作します。私はいくつかの詳細を見つけることを試みる... – Buthrakaur