Подтвердить что ты не робот

Инициализация приложений IIS 7.5 для веб-службы ASP.NET(разминка) без переназначения запросов

Я пытаюсь использовать расширение инициализации приложений IIS 7.5 для настройки процесса прогрева для моего веб-приложения. Это подход, который я предпринимаю, чтобы свести к минимуму замедление, вызванное рециркуляцией пула приложений, что является проблемой хорошо объяснено в других вопросах.

Что мне хотелось бы, это получить преимущества инициализации приложения, без переназначения запросов где-либо еще.

Что я сделал до сих пор

Я следил за инструкциями IIS 8 для основного варианта использования, и он отлично работает! Я создал всплывающую страницу под названием app_starting.htm, и с помощью этого кода она отображается, пока приложение инициализируется:

<applicationInitialization remapManagedRequestsTo="app_starting.htm" skipManagedModules="true" >
    <add initializationPage="/" />
</applicationInitialization>

Почему это не хорошо

Я хочу использовать инициализацию для ускорения запросов к веб-службе на основе REST, написанной с использованием ASP.NET MVC. Этот веб-сервис является бэкэнд для нескольких приложений. Когда они делают запрос к ресурсу (т.е. /client/1/addresses), они не могут обрабатывать получение всплывающей страницы.

Что я пробовал

Я удалил атрибут remapManagedRequestsTo. Однако сейчас, когда я запрашиваю ресурс во время инициализации, я получаю ошибку 500 до завершения инициализации. После этого ответы возвращаются к норме. Приложения, которые полагаются на эту услугу, также не будут хорошо реагировать на ошибку 500, поскольку инициализация не должна быть условием ошибки.

Что мне нужно

Не выполняя переназначения, я ожидаю, что поведение запроса вернется к нормальному состоянию. Даже если инициализация выполняется, другие запросы к приложению должны быть поставлены в очередь и ждать, пока не завершится инициализация.

Есть ли что-то, что мне не хватает? Могу ли я выполнить это?

Спасибо за помощь!

4b9b3361

Ответ 1

Думаю, я ответил на свой вопрос. Я удалил атрибут skipManagedModules, и он сработал. Этот код выполняет инициализацию приложения, и во время разминки запросы, похоже, ждут завершения до обработки:

<applicationInitialization>
    <add initializationPage="/" />
</applicationInitialization>

Я не мог найти никакой документации о том, почему она ведет себя таким образом и не понимает, что означает skipManagedModules. Если кто-нибудь еще сможет объяснить это, я могу отметить это объяснение как ответ. Спасибо!