У меня есть проект C # Owin WebApi Selfhost, и контроллеры, которые я использую, реализованы в отдельных сборках. Я нахожу эти сборки по соглашению об именах, прежде чем запускаю WebApp и загружаю их в AppDomain. Затем, когда запускается Api, контроллеры становятся доступными. Существует еще один подход, который включает собственный класс IAssemblyResolver, который заменяет класс по умолчанию в Config.Services.
config.Services.Replace(typeof(IAssembliesResolver), new MyAssembliesResolver());
Это также работает, все мои отдельные сборки контроллеров найдены, загружены и доступны.
Теперь к проблеме: может случиться так, что в моем исполняющем каталоге появится новая сборка контроллера. В My Api есть «AssembliesController», которому можно приказать искать новые сборки в исполняемом каталоге и загружать их во время выполнения. Это тоже работает, но проблема в том, что контроллеры во вновь загруженной сборке недоступны, пока я не перезапущу свой Api.
Похоже, что Api только один раз запрашивает сборки (IAssembliesResolver) и доступные типы контроллеров (IHttpControllerTypeResolver) при запуске и работает с результатами до конца. Но в моем случае я хочу добавлять сборки / контроллеры во время выполнения без перезапуска Api. Кто-нибудь может мне помочь? Как заставить Api обновлять сборки / контроллеры?