Всем привет и доброго утра,
Я столкнулся с проблемой, когда запущенные службы больше не подписываются на обнаружение служб. При тестировании они работали под управлением IIS Express. Однако как только я переключил его на IIS и убедился, что все еще работает; служба больше не обращается к Application_Start() в Global.asax.cs.
Проведя небольшое исследование, выяснилось, что IIS требует небольшой настройки, чтобы заставить его выполнять некоторую работу по инициализации после запуска пула приложений. Я запускаю это в среде Windows 10 Professional с IIS 10.0.17763.1.
Цель: запустить службу для подписки на обнаружение службы, если она работает под управлением IIS Express.
Сначала я нашел в MSDN документацию по настройке всего этого, включая предварительные условия здесь Инициализация приложения IIS 8.0
Выполнив все шаги и обновив необходимые записи конфигурации, я все еще не инициализирую свою веб-службу при запуске пула приложений.
Я создал новую конечную точку на контроллере для тестирования, чтобы заставить это работать.
Контроллер аккаунта:
[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 приложения. Правильно ли я понимаю, как это должно работать? Если да, то может кто-нибудь объяснить, почему?
Я не просто пытаюсь «заставить это работать». Я хотел бы понять, почему в настоящее время это «не работает» для меня.
Спасибо всем продвинутым, кто нашел время, чтобы ответить здесь.