将Web API控制器添加到不同的程序集

本文关键字:程序集 添加 Web API 控制器 | 更新日期: 2023-09-27 17:57:47

如何将Web Api控制器添加到不同的程序集?我想将web API控制器从我的MVC应用程序中分离出来。

将Web API控制器添加到不同的程序集

WebApi开箱即用。

DefaultAssemblyResolver类用于加载程序集以查找ApiControllers。这是源代码:

  public class DefaultAssembliesResolver : IAssembliesResolver {    
    public virtual ICollection<Assembly> GetAssemblies() {
      return AppDomain.CurrentDomain.GetAssemblies().ToList();
    }
  }

诀窍是在第一次调用web.api服务之前将程序集加载到AppDomain。

调用目标程序集中类的任何方法,或者简单地从中加载一个类型。例如:

var x = typeof (YourApiControllerInAnotherAssembly);

如果您使用的是WebApi的旧版本,请尝试实现IAssemblyResolver并更改其默认实现,如下所示:

GlobalConfiguration.Configuration.Services.Replace(typeof(IAssembliesResolver), 
                                                   new YourCustomAssemblyResolver());
  • 在解决方案中创建一个新的类库项目,并添加新的从ApiController继承的类
  • 您可能需要为新项目添加一些额外的引用,因为默认情况下不会包括所有的mvc库
  • 在mvc项目中,添加对包含api控制器的新类库项目的引用
  • 构建和测试