【发布时间】:2016-06-28 04:58:18
【问题描述】:
我有一个 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 刷新程序集/控制器?
【问题讨论】:
-
也许this 可以帮助你。有人在我想之前就问过了,但没有标记任何答案。
标签: c# rest asp.net-web-api owin self-hosting