При работе в IIS Express при отладке Application_Start
метод в Global.asax.cs выполняется просто отлично.
Это потому, что запуск вашего приложения с VS автоматически откроет просмотр, который выполнит первый запрос. Таким образом, сервер получает свой первый запрос косвенно через ваши действия через VS.
Application_Start срабатывает только когда я вызываю его со страницы
http://localhost:7000/SignalR/hubs или Клиент отправляет запрос SignalR
в первый раз и после этого серверный код работает правильно.
Это конфигурация по умолчанию. Application_Start
Событие запускается при получении первого запроса. Но вы можете изменить это через конфигурацию в web.config . Поэтому вы должны использовать элемент <applicationInitialization>
, как объяснено Microsoft :
Элемент <applicationInitialization>
указывает, что веб-приложение
инициализация выполняется в упреждающем режиме до получения запроса.
Приложение может запускаться быстрее, если последовательность инициализации
такие как инициализация соединений, заполнение кешей в памяти, запуск
запросы и компиляция кода страницы выполняются до HTTP-запроса
Кстати, чтобы сделать это без разогрева сервера, вам нужно перейти на более высокую версию IIS. Минимальная требуемая версия - IIS 8. Ссылка на документацию, добавленная выше, объясняет, как активировать эту функцию.
Если вы считаете, что процесс инициализации может занимать много времени (инициализация кэша и т. Д.), Этот элемент конфигурации также позволяет настроить статическую страницу или заставку, которые будут отображаться для использования до завершения инициализации. Для этого вы используете remapManagedRequestsTo
атрибут <applicationInitialization>
.
Итак, ваша конфигурация должна выглядеть следующим образом в вашем файле web.config:
<system.webServer>
<applicationInitialization
doAppInitAfterRestart="true"
skipManagedModules="true"
remapManagedRequestsTo="path_to_your_static_file_to _show">
</applicationInitialization>
</system.webServer>
Для получения дополнительной информации не забудьте нажать на ссылку с документацией, которую я добавил ранее.