在不同的MVC应用程序中显示ASP.net WebAPI文档

时间:2017-05-03 03:46:48

标签: asp.net-mvc asp.net-web-api2

在我的解决方案中,我有两个项目。一个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集合为空。

首先,我正在尝试做什么呢?如果是的话,我该如何实现这一目标?

更新 问题似乎出现在HttpConfigurationApiExplorer离开_config.Routes,从MVC应用程序启动时为空。

0 个答案:

没有答案