将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控制器的新类库项目的引用
- 构建和测试