将Web API控制器添加到不同的程序集
本文关键字:程序集 添加 Web API 控制器 | 更新日期: 2023-09-27 17:57:47
如何将Web Api控制器添加到不同的程序集?我想将web API控制器从我的MVC应用程序中分离出来。
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控制器的新类库项目的引用
- 构建和测试