問題はApplication_Endは、私は私のWebプロジェクトのAppDomainがアンロードされたときに起こる
を拾い読みしていながら、頻繁に と呼ばれているように見えるということです。デバッグ中は、bin
フォルダ内のアセンブリを再コンパイルするたびに再生成されるたびにASP.NETがアプリケーションドメインをリサイクルするため、通常はプロジェクトを再コンパイルするたびに発生します。
IISにアプリケーションをデプロイすると、IISがアプリケーションをリサイクルすることを決定した場合にのみ、それが起こることはめったにありません。これは、異なる状況下で起こるかもしれない:非アクティブの一定期間、CPU /メモリのしきい値に達している、セッションは を終了またはアイドル一定の時間が経過したとき...
にのみ呼び出されてApplication_Endべきではありません?
いいえ、Application_End
は、ユーザーセッションとは関係ありません。アプリケーションドメインの終わりに呼び出されます。
私は実際にアプリケーションを使用し終わったときにApplication_End が呼び出されることを確実にする方法を教えていただけますか?
これはそのケースです。Application_End
は、アプリケーションドメインをアンロードする準備ができたら、ASP.NETランタイムによって呼び出されます。
だから、あなたが永続的なデータベースではなく、メモリ内のストレージを使用する必要があります起きてからこれを避けたい場合。メモリ内のストレージを使用している場合、アプリケーションの存続期間に縛られており、すでに気づいているように極端に短くなる可能性があります。
私のデータベースは、オブジェクトの編集とインデックスへのリダイレクトの間に配置され、変更がないことを示しています。私が呼び出すすべてのアクションであると思われるものに処理されるデータベースを停止するために何か他のことを提案することはできますか? – DevDave
@タイラー、私は永続的なデータベースを使用することをお勧めします。メモリ内のデータベースはユニットテストには最適ですが、実際のアプリケーションではまったく役に立たないものです。 –