在我的解决方案中,我有两个项目。一个ASP.Net WebAPI包含多个控制器和操作,另一个是MVC5应用程序。导航到WebAPI项目本身的/ Help路径时,文档正常呈现。
目标是显示MVC应用程序中的相同文档(MVC是前端,WebAPI是无UI)。
我引用了API程序集并将其命名空间添加到MVC应用程序中的RouteCollection
;并将必要的视图复制到MVC应用程序。帮助控制器本身显示正常。
问题是,Configuration.Services.GetApiExplorer().ApiDescriptions
集合为空。我猜,ApiExplorer正在搜索MVC程序集而不是API程序集。
我尝试按如下方式定义自己的IAssembliesResolver
:
public class ApiAssemblyResolver : DefaultAssembliesResolver
{
/// <summary>
///
/// </summary>
/// <returns></returns>
public override ICollection<Assembly> GetAssemblies()
{
var controllersAssembly = Assembly.GetExecutingAssembly();
return new [] { controllersAssembly };
}
}
然后尝试在HelpController(HttpConfiguration config)
控制器(在API程序集中)中设置它,如下所示:
public HelpController(HttpConfiguration config)
{
config.Services.Replace(typeof(IAssembliesResolver), new ApiAssemblyResolver());
Configuration = config;
}
ApiDescriptions集合为空。
首先,我正在尝试做什么呢?如果是的话,我该如何实现这一目标?
更新
问题似乎出现在HttpConfiguration
。 ApiExplorer
离开_config.Routes
,从MVC应用程序启动时为空。