【问题标题】:Refreshing loaded Assemblies during WebApi runtime在 WebApi 运行时刷新加载的程序集
【发布时间】: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


【解决方案1】:

您需要覆盖 DefaultHttpControllerSelector。 这是一篇关于这个主题的非常好的文章:link 尽情享受吧!

【讨论】:

    猜你喜欢
    • 2016-01-10
    • 2018-04-24
    • 2012-08-02
    • 1970-01-01
    • 2011-09-09
    • 1970-01-01
    • 1970-01-01
    • 2012-08-21
    相关资源
    最近更新 更多