将Web API Controller添加到不同的程序集

arn*_*rob 3 .net c# asp.net-mvc-4 asp.net-web-api

如何将Web Api Controller添加到其他程序集?我想将Web API控制器与我的MVC应用程序分开.

and*_*cci 8

WebApi开箱即用.

DefaultAssembliesResolver类是用于加载程序集以查找ApiControllers的类.这是源代码:

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

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

在目标程序集中调用类的任何方法,或者只是从中加载一个类型.例如:

var x = typeof (YourApiControllerInAnotherAssembly);
Run Code Online (Sandbox Code Playgroud)

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

GlobalConfiguration.Configuration.Services.Replace(typeof(IAssembliesResolver), 
                                                   new YourCustomAssemblyResolver());
Run Code Online (Sandbox Code Playgroud)