Привет и доброе утро всем,
Я столкнулся с проблемой, когда службы, которые когда-то запускались, больше не подписывались на обнаружение службы. При тестировании они работали под управлением IIS Express. Однако, как только я перевернул его в IIS и убедился, что все еще работает; служба больше не обращается к Application_Start () в Global.asax.cs.
Проведя небольшое исследование, выясняется, что IIS требуется небольшая настройка, чтобы выполнить некоторую работу по инициализации после запуска пула приложений. Я запускаю это в среде Windows 10 Professional с IIS 10.0.17763.1
Цель: запустить службу для подписки на обнаружение службы, если она работала в IIS Express.
Я впервые нашел в MSDN документацию по настройке всего этого, включая предварительные условия здесь Инициализация приложения IIS 8.0
После прохождения всех этапов и обновления необходимых записей конфигурации кажется, что я все еще не инициализирую свой веб-сервис при запуске пула приложений.
Я создал новую конечную точку на контроллере для целей тестирования, чтобы заставить это работать.
AccountController:
[System.Web.Http.HttpGet]
public IHttpActionResult Init()
{
// here is where I am registering the service thats coming up
}
Файл определения маршрута:
{"Name": "Account - Init",
"RouteTemplate": "api/{controller}/init",
"Defaults": "controller = AccountController, action = Init"}
Web.config
<applicationInitialization skipManagedModules="false" doAppInitAfterRestart="true" remapManagedRequestsTo="/api/account/init">
<add initializationPage="/api/account/init" />
</applicationInitialization>
Я предполагаю, что инициализация произойдет только ОДИН РАЗ, и это происходит при первом запуске или повторном использовании пула приложений. Внутренние службы IIS будут выполнять «управляемый» вызов веб-приложения для сопоставленного ресурса, который он находит в файле приложения web.config. Мое понимание того, как оно должно работать неправильно? Если да, то может кто-нибудь объяснить, почему?
Я не просто пытаюсь «заставить это работать». Я хотел бы понять, почему это «не» в настоящее время работает для меня.
Спасибо всем продвинутым, кто нашел время, чтобы ответить здесь.