Всем привет и спасибо за чтение,
У меня проблема с задержкой, из-за которой мое приложение долго запускается при первом вызове по истечении определенного периода времени с момента последнего вызова. Веб-приложение является службой WCF, и мы говорим о задержке ~ 18 секунд до начала фактической обработки. Теперь я считаю, что знаю, как уменьшить эту задержку, так что это не мой вопрос (в любом случае это скорее сделка с переполнением стека)
У меня вопрос, Может ли кто-нибудь объяснить мне, почему, несмотря на то, что я отключил завершение рабочего процесса и его перезапуск, приложение по-прежнему «останавливается» после неопределенного периода времени бездействия?
Чтобы понять это, мне нужно больше знать о внутренней работе служб WCF, размещенных в IIS. Я полностью ожидаю, что на этот вопрос будет прямой ответ.
Большое спасибо за любую помощь, которую вы можете предложить, округ Колумбия
Если на вкладке «Повторное использование и производительность» рабочего процесса не отмечены все флажки, IIS не должен завершать процессы. Есть ли записи в журнале событий, которые соответствуют времени «свертывания» процесса? Мне кажется, что приложение WCF потенциально вылетает. WCF не регистрирует исключения в журнале событий, как стандартное приложение .NET, поэтому, если вы не пишете свои собственные журналы, вы можете включить Трассировка WCF чтобы увидеть, возможно, это проблема.
Между тем, быстрое уродливое решение вашей проблемы может заключаться в том, чтобы создать какой-то дешевый тест или транзакцию только для чтения в вашей службе WCF и просто настроить приложение или скрипт для мониторинга, чтобы опрашивать его каждые X секунд, чтобы рабочий процесс работал с кодом pre-JIT'd.
Я считаю, что проблема не связана с WCF, и ошибка заключалась в том, что nHibernate разбирал свои сопоставления. Я решил это, скомпилировав файлы сопоставления nHibernate, поэтому nHibernate не пришлось.