[解決済み] ASP MVC: IController Dispose()はいつ呼ばれるのか?
2023-07-09 05:09:19
質問
私は、大規模な MVC アプリケーションの 1 つを大規模なリファクタリング/速度調整中です。 それは数か月間本番環境に配備され、接続プールで接続を待つ間にタイムアウトが発生するようになりました。 私は、接続が適切に破棄されないという問題を突き止めました。
これを踏まえて、私はベースコントローラーに次の変更を加えました。
public class MyBaseController : Controller
{
private ConfigurationManager configManager; // Manages the data context.
public MyBaseController()
{
configManager = new ConfigurationManager();
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
if (this.configManager != null)
{
this.configManager.Dispose();
this.configManager = null;
}
}
base.Dispose(disposing);
}
}
では、2つの質問をさせていただきます。
-
私はレースコンディションを導入しているのでしょうか?
というのも
configManager
を管理しているのでDataContext
を公開するIQueryable<>
パラメータを ビューに公開する場合、私はDispose()
が呼び出されないようにする必要があります。 が呼び出されないようにする必要があります。 -
MVCフレームワークは
Dispose()
を呼び出すのでしょうか? それとも、MVCフレームワークはそのことを GarbageCollectorに任せるのでしょうか?
どのように解決するのですか?
Disposeはビューがレンダリングされた後に呼び出されます。 常に .
の呼び出しでビューがレンダリングされます。
ActionResult.ExecuteResult
. それが(間接的に)呼び出されるのは
ControllerActionInvoker.InvokeAction
によって呼び出され、それがまた
ControllerBase.ExecuteCore
.
ビューのレンダリング時にはコントローラはコールスタックにあるため、その時点で破棄することはできません。
関連
-
[解決済み] glyphicons-halflings-regular.woff2 not foundに関するエラーを削除する方法
-
[解決済み] GC.SuppressFinalize()はいつ使うべきですか?
-
[解決済み] JsonResultが特殊文字(apostrophe)を \u0027 としてパースしています。
-
[解決済み] System.Web.HttpException (0x80004005)。リクエストの最大長を超えました
-
[解決済み] ファイルアップロード ASP.NET MVC 3.0
-
[解決済み] ASP.NET MVCでenumからドロップダウンリストを作成するにはどうすればよいですか?
-
[解決済み] MVCで、文字列の結果を返すにはどうしたらいいですか?
-
[解決済み] ASP.NET MVCでビューをコンパイルする
-
[解決済み] C#のFinalize/Disposeメソッドの使用について
-
[解決済み] ソートロジックは、モデル、ビュー、コントローラのいずれに配置するのがよいのでしょうか?[クローズド]
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] RedirectToActionのパラメータとしてmodelを渡すことはできますか?
-
[解決済み] DI向けNinjectとUnityの比較【終了しました
-
[解決済み] Visual Studioのデバッグ/ロードが非常に遅い
-
[解決済み] ASP.NET MVCでHTML-5のdata-*属性でダッシュを使用する方法
-
[解決済み】ASP.NET MVC 3 razor ViewStart ファイルで異なるレイアウトを指定するには?
-
[解決済み] [Solved] ASP.NET MVCでアクションの絶対URLを見つけるにはどうすればよいですか?
-
[解決済み] ASP.NET MVCでリクエストスロットルを実装するための最良の方法は?
-
[解決済み】MVC 4 @Scripts "does not exist".
-
[解決済み】HTTPエラー500.19とエラーコード: 0x80070021
-
[解決済み] Entity Frameworkのデータベースを再作成する方法は?