我有一个C#Owin WebApi Selfhost项目,我使用的控制器是在单独的程序集中实现的。 我在启动WebApp之前通过命名约定找到这些程序集并将它们加载到AppDomain中。然后,当Api启动时,可以访问控制器。还有另一种方法涉及自定义IAssemblyResolver类,它取代了Config.Services中的默认值
config.Services.Replace(typeof(IAssembliesResolver), new MyAssembliesResolver());
这也有效,我的所有单独的控制器组件都可以找到,加载和访问。
现在问题:可能会出现一个新的控制器程序集出现在我的执行目录中。我的Api有一个“AssembliesController”,可以告诉它在执行目录中查找新程序集并加载它们 在运行时。这也有效,但问题是:在重新启动Api之前,新加载的程序集中的控制器无法访问。
似乎Api在启动时只询问程序集(IAssembliesResolver)和可用的控制器类型(IHttpControllerTypeResolver),并使用结果直到结束。但在我的情况下,我想在运行时添加程序集/控制器而不重新启动Api。有人可以帮帮我吗?如何让Api刷新组件/控制器?