Web API帮助页面未加载文档XML

时间:2016-05-26 10:50:51

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

我正在尝试设置ASP.NET Help Pages以在现有的MVC项目中运行,尽管指向同一解决方案中的Web API项目的文档文件。约定在其正在记录的Web API中运行帮助页面,但在这种情况下,我希望它在兄弟MVC项目中。

Web API项目将其文档XML文件输出到MVC项目的文件夹中。

我在MVC项目中安装了Microsoft.AspNet.WebApi.HelpPage NuGet package。这会创建一个类\Areas\HelpPage\App_Start\HelpPageConfig.cs,并且在此类的Register方法中,我已将XmlDocumentationProvider路径传递给Web API的文档文件。

但是当我加载页面时,除了标题和占位符描述之外,它都是空的。

调试HelpController.Index方法后,我可以在返回的IApiExplorer中看到_apiDescriptions为空。

Screenshot from Help Pages running inside MVC project

但是,如果我将帮助页面直接安装到Web API项目并调试相同的方法,我可以看到_apiDescriptions现在已经存在。

Screenshot from Help Pages running inside Web API project

任何人都可以解释一下Web API项目正在做什么或者已经配置了哪些MVC项目没有做或没有配置?

2 个答案:

答案 0 :(得分:5)

请自己设置一下,如果我正在阅读您正确说出的内容,我认为我遇到了类似的问题。

尝试以下方法:

  1. 转到Regions \ HelpPage \ App_Start \ HelpPageConfig.cs。在第36行附近,您要确保取消注释该行,如下所示:
  2. 
    
    //// Uncomment the following to use the documentation from XML documentation file.
                config.SetDocumentationProvider(new XmlDocumentationProvider(HttpContext.Current.Server.MapPath("~/App_Data/ApiDocumentation.xml")));
    
    
    
 并确保路径正确。我碰巧将我的xml文件放在App_Data目录中。

    1. 转到Project => Properties => Build。在Output下,确保" XML文档文件"选中框,并将其指向App_Data \ ApiDocumentation.XML(假设您将其放在我上面所做的相同位置。
    2. 如果我没记错的话,我必须确保将.xml文件添加到项目中 - 当我尝试将其发布到工作中的测试服务器时我遇到了一些问题并且说文件无法找到。构建完成后,只需转到App_Data,右键单击该文件夹,然后添加现有项目。导航到文件系统中的App_Data并选择xml文件。
    3. 这有望解决您的问题!

答案 1 :(得分:1)

我不确定这是否会帮助其他人偶然发现这一点,我从VS开始使用空白模板,并通过Nuget包添加了帮助文件。

因为它是一个空白模板而我没有设置区域,所以它缺少来自global.asax的以下内容

AreaRegistration.RegisterAllAreas();

这样就无法调用HelpPageConfig.Register,因此从未设置过Xml文档提供程序。