asp.net-MVC.как определить, готов ли IIS начать показ страниц - PullRequest
0 голосов
/ 23 ноября 2010

Я создаю приложение asp.net MVC 2, которое имеет страницу ping, чтобы сообщить другой системе, работает ли приложение.Я полагаю, что это также используется для информирования балансировщика нагрузки об активных узлах.Вот что я имею в действии моего контроллера.

 public ActionResult PingApp()
            {
                // If we get here this node is alive. Echo "Ok".
                return Content("OK");
            }

Я не верю, что он работает правильно, потому что, когда я запускаю или перезапускаю приложение, возникает много других задач, которые необходимо настроить, прежде чем приложениедействительно готов и "ОК".(то есть, загрузка DLL, прекомпиляция ASPX-страниц и т. д., если я правильно понимаю вещи).Я использую IIS 7. Кто-нибудь знает, как я могу проверить и посмотреть, действительно ли IIS и Мое приложение «готовы».
- Спасибо.

Ответы [ 2 ]

1 голос
/ 23 ноября 2010

Asp.net MVC - это веб-приложение , а не веб-сайт ( различия в этом вопросе stackoverflow), которое предварительно компилируется для каждой страницы.Asp.net MVC при запуске его DLL полностью JIT-компилируется для платформы и работает.

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

Загрузить все сборки

Если вы хотите, чтобы ваши PingApp также загружали их, вам следуетвызывая некоторые фиктивные функции внутри них, чтобы они были скомпилированы, загружены и выполнены JIT.

Первый вызов вашего PingApp займет некоторое время, чтобы активировать JIT-компиляцию и загрузить ваше веб-приложение и запустить его.

0 голосов
/ 23 ноября 2010

Полагаю, это зависит от того, что вы подразумеваете под «по-настоящему готовым», но это решение работает.

ASP.NET / IIS / .NET целенаправленно не делает определенные вещи, пока они не будут абсолютно необходимы - например, загрузкапока неиспользованные типы или компиляция ASPX-страниц (которые включают в себя представления здесь).

Если вы абсолютно хотите убедиться, что определенные вещи были «загружены в память», то вам просто нужно иметь свое действиезаставить их загружаться, ссылаясь на них как-то.Даже создание экземпляра класса по умолчанию приведет к тому, что эта библиотека будет найдена и загружена.

Но действительно ли это необходимо?Приведет ли это к ненужной загрузке приложения и всех его компонентов, когда все, что вы действительно хотите знать, это «запущен ли сервис»?

...