5

フォームを最初に送信したときに選択した値をポストバックするHtml.DropDownListがビューにあるという問題が発生しましたが、後続の各ポストバックは最初のポストバックからのデータのみを投稿します。そこで、キャッスルウィンザー用にコントローラーを構成したコンポーネント要素にlifestyle = "transient"を追加しました。これで問題は解決しましたが、リクエストごとに新しいコントローラーがインスタンス化されていたため、もちろんポストバックに時間がかかりました。上記の情報を前提として、コントローラーのライフスタイルに関する最初の質問を決定するのに役立つ洞察、提案、または解決策は何ですか?すべての助けとサポートに感謝します!

4

4 に答える 4

7

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

于 2009-11-24T19:16:49.297 に答える
4

私はディオンに同意します。この同じ質問の解決策を探してここに着陸しました。PerWebRequestの方が適切なようです。

コンテナーを MVC および WebApi に統合する方法によっては、コントローラーが使用されなくなったときに依存関係を解放するように Windsor に指示していない場合があります。

に設定すると、リクエストの終了時にコントローラとそのすべての依存関係PerWebRequestが自動的に解放されます

于 2013-12-12T19:44:07.513 に答える