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

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

WebApi开箱即用。

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

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

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

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

 var x = typeof (YourApiControllerInAnotherAssembly); 

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

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