コントローラーのコンストラクターが各Webリクエスト中に呼び出されないことは、私の理解です。これが正しいと仮定すると、コントローラのライフサイクルはどのくらいですか? Isは、アプリケーションの開始時に "構築"され、キャッシュされ、各Webリクエストでrequestcontextが注入されて呼び出されますか?ASP.NET MVCコントローラのライフサイクル
コンストラクタの動作をエミュレートする方法を尋ねるのではなく、OnActionExecutingイベントを使用して、通常コンストラクタで行うことを開始します。また、私はユニットとシステムのテストのためのコントローラでコンストラクタを使用します。
ありがとうございます!
なぜですか。どうして? –
私は台無しにして、なぜこれが当てはまるのか、なぜそうすべきなのか、自分自身に教えました。私はEFを使って読み書きアクションとビューを持つコントローラを作成していました。生成されたコードは、EFコンテキストインスタンスのプライベートインスタンス変数を作成しました。私は賢くて静的変数にすると思った。問題は、このコントローラーの範囲外にあるものがデータベースを変更した場合、静的コンテキストは決して知りません。これをインスタンス変数として残しておき、各リクエストで新しいインスタンスが作成されるので、コンテキストはデータベースの変更を見ることができます。 – ThatAintWorking
すべての状態がパラメータ(つまり機能的スタイル)内に含まれるWeb APIでは、なぜコントローラを再利用できないのかはわかりません。設計上、スレッドセーフです。 –