【发布时间】:2014-05-23 00:54:57
【问题描述】:
如何将 Web Api 控制器添加到不同的程序集? 我想将 Web API 控制器从我的 MVC 应用程序中分离出来。
【问题讨论】:
标签: c# .net asp.net-mvc-4 asp.net-web-api
如何将 Web Api 控制器添加到不同的程序集? 我想将 Web API 控制器从我的 MVC 应用程序中分离出来。
【问题讨论】:
标签: c# .net asp.net-mvc-4 asp.net-web-api
【讨论】:
WebApi 开箱即用。
DefaultAssembliesResolver 类是用于加载程序集以查找 ApiController 的类。以下是源代码:
public class DefaultAssembliesResolver : IAssembliesResolver {
public virtual ICollection<Assembly> GetAssemblies() {
return AppDomain.CurrentDomain.GetAssemblies().ToList();
}
}
诀窍是在第一次调用 web.api 服务之前将程序集加载到 AppDomain。
在目标程序集中调用类的任何方法或直接从其中加载类型。例如:
var x = typeof (YourApiControllerInAnotherAssembly);
如果您使用的是旧版本的 WebApi,请尝试实现 IAssembliesResolver 并更改它的默认实现,如下所示:
GlobalConfiguration.Configuration.Services.Replace(typeof(IAssembliesResolver),
new YourCustomAssemblyResolver());
【讨论】: