5

私は最初のフォームを送信したときに選択した値をポストバックするビューでHtml.DropDownListを持っていたが、その後の各ポストバックは最初のポストバックからデータをポストするという問題が発生した。そこで私は、問題を修正したcastle windsorのコントローラーを構成したコンポーネント要素にlifestyle = "transient"を追加しましたが、要求ごとに新しいコントローラーがインスタンス化されてから、ポストバックに時間がかかりました。上記の情報があれば、コントローラのライフスタイルに関する私の元の質問をどのような洞察、提案、または解決策で判断できますか?すべての助けとサポートをありがとう!ASP.NET MVCのWindsor設定で、コントローラのライフスタイルが常に一時的であるべきですか?

答えて

6

MVCコントローラは一時的です。それについて考えると、これはいくつかの理由から意味があります。まず、複数のリクエストを処理するために1つのインスタンスを使用し、複数のリクエストが同時に同じコントローラにヒットした場合、かなり奇妙な競合状態が発生します。第二に、HTTPは本質的にステートレスであり、リクエストは互いに独立して存在します。これはコントローラの過渡的なライフスタイルに反映されます。

+0

を終了したときに

は、それが自動的にあなたのコントローラ、およびそのすべての依存関係を解放します。私はおそらくそのことを考慮せずにそのことを思っていたかもしれません。洞察に感謝します。私の質問には確かにYESと思われますが、私は解決策を実現するためにwindsorボックスの中にあまりにも多くのことを考えていました。どうもありがとうございました! – mkelley33

+0

ライフスタイルを定義することなく、 "Singleton"のデフォルトが使用されることを指摘しておく価値があります。それが問題を引き起こすのは間違いありません。 – Ted

5

一時的ですが、興味がありますが、TransientではなくPerWebRequestを使用してください。私はPerWebRequestのライフスタイルを使用するいくつかのブログを見てきました。なぜそうでないのか考えることはできません。答えは?

4

私はDionに同意します。この同じ質問に対する解決策を探してここに着いた。 PerWebRequestがより適切であるようです。

コンテナをMVCとWebApiにどのように統合するかによって、コントローラがもう使用されていないときにウィンザーに依存関係を解放するよう指示することができません。あなたはPerWebRequestに設定した場合は、要求がLOL

関連する問題