皆さんこんにちは。読んでくれてありがとう。
遅延の問題があり、前回の呼び出しから一定期間が経過した後に初めて呼び出されると、アプリケーションの起動に長い時間がかかります。Web アプリケーションは WCF サービスであり、実際の処理が開始されるまでに約 18 秒の遅延が発生します。この遅延を短縮する方法はわかっているので、これは私の質問ではありません (いずれにしても、これは StackOverflow の問題です)
私の質問はワーカー プロセスのシャットダウンとワーカー プロセスのリサイクルを無効にしているにもかかわらず、アプリケーションが一定時間非アクティブになると「終了」してしまうのはなぜでしょうか。誰か説明してもらえますか?
これを理解するには、IIS でホストされている WCF サービスの内部動作についてさらに詳しく知る必要があります。これには明確な答えがあるものと期待しています。
何かお手伝いできることがあれば、本当にありがとうございます、DC
答え1
ワーカープロセスのリサイクルとパフォーマンスタブですべてのチェックがオフになっている場合、IIS はプロセスを終了しないはずです。プロセスが「終了」する時間に対応するイベントログエントリはありますか? WCF アプリがクラッシュする可能性があるように思えます。WCF は標準の .NET アプリのようにイベントログに例外を記録しないので、独自のログを作成していない場合は、WCF トレースそれが問題なのかどうか確認するためです。
当面の問題に対する迅速で醜い解決策としては、WCF サービスで何らかの安価なテストまたは読み取り専用トランザクションを作成し、監視アプリまたはスクリプトを構成して X 秒ごとにポーリングし、JIT 前のコードを使用してワーカー プロセスを稼働させ続けることが考えられます。
答え2
この問題は WCF とは無関係で、nHibernate がマッピングを整理する際に問題があったと思います。nHibernate のマッピング ファイルをコンパイルして、nHibernate がコンパイルしなくても済むようにすることで、この問題を解決しました。