我在同一个项目中有两个解决方案,一个是完整的API,另一个是 一个(图书馆)与我的ApiControllers。有没有一种简单的方法在我的Web API项目中使用我的库中的ApiControllers?
答案 0 :(得分:1)
是的,在Web API中,您可以通过提供自定义IAssembliesResolver
来使用外部程序集中的控制器。
public class CustomAssemblyResolver : DefaultAssembliesResolver
{
public override ICollection<Assembly> GetAssemblies()
{
var assemblies = base.GetAssemblies();
var controllersAssembly = Assembly.LoadFrom(@"C:\PATH_TO_MY_CONTROLLERS_ASSEMBLY");
assemblies.Add(controllersAssembly);
return assemblies;
}
}
或者如果您不想手动加载DLL
public class CustomAssemblyResolver : DefaultAssembliesResolver
{
public override ICollection<Assembly> GetAssemblies()
{
var assemblies = base.GetAssemblies();
var controllersAssembly = typeof(SomeTypeFromControllersLibrary).Assembly;
assemblies.Add(controllersAssembly);
return assemblies;
}
}
然后,您必须针对HttpConfiguration
:
httpConfiguration.Services.Replace(typeof(IAssembliesResolver),new CustomAssemblyResolver());
更多信息: http://www.strathweb.com/2012/06/using-controllers-from-an-external-assembly-in-asp-net-web-api/