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是空的。

在 MVC 项目中运行的帮助页面的屏幕截图

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

在 Web API 项目中运行的帮助页面的屏幕截图

谁能解释 Web API 项目正在做什么或已经配置了 MVC 项目没有做什么或没有配置?

4

2 回答 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")));
并确保路径正确。我碰巧把我的 xml 文件放在 App_Data 目录中。

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

这有望解决您的问题!

于 2016-06-16T17:59:06.660 回答
1

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

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

AreaRegistration.RegisterAllAreas();

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

于 2016-07-01T08:37:29.417 回答