Web API帮助页面无法加载文档XML。

4
我正在尝试设置ASP.NET帮助页面以在现有的MVC项目中运行,但指向同一解决方案中Web API项目中的文档文件。惯例上,帮助页面在其所记录的Web API内运行,但在这种情况下,我希望它在一个兄弟MVC项目中。
Web API项目将其文档XML文件输出到MVC项目中的一个文件夹中。
我已经在MVC项目中安装了Microsoft.AspNet.WebApi.HelpPage NuGet包。这将创建一个类\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个回答

8

我刚刚自己设置了这个,并且如果我正确理解你的话,我认为我遇到了类似的问题。

请尝试以下操作:

  1. 进入Areas\HelpPage\App_Start\HelpPageConfig.cs。在第36行左右,确保您取消了以下行的注释:

//// Uncomment the following to use the documentation from XML documentation file.
            config.SetDocumentationProvider(new XmlDocumentationProvider(HttpContext.Current.Server.MapPath("~/App_Data/ApiDocumentation.xml")));

And make sure the path is correct. I happened to put my xml file in the App_Data directory.

  1. 转到项目=>属性=>生成。在输出下,确保选中“XML文档文件”框,并将其指向App_Data\ApiDocumentation.XML(假设您将其放在上面相同的位置)。
  2. 如果我没记错的话,我必须确保将.xml文件添加到项目中-当我尝试将其发布到我们工作的测试服务器时,我遇到了一些问题,它说找不到该文件。构建完成后,只需转到App_Data,右键单击文件夹,然后添加现有项。导航到您的文件系统中的App_Data并选择xml文件。

这样就可以解决您的问题了!


1
我不确定这是否会帮助其他遇到此问题的人,我从VS中开始使用空白模板,并通过Nuget包添加了帮助文件。
由于它是一个空白模板,而且我没有设置任何区域,所以在global.asax中缺少以下内容。
AreaRegistration.RegisterAllAreas();

这样做阻止了 HelpPageConfig.Register 的调用,因此 Xml 文档提供程序从未被设置。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接