1、打开项目路径如下的类文件:
1.1、找类方法 Register 下的 config.SetDocumentationProvider 并取消注释,修改 ~/App_Data/XmlDocument.xml 为你自己的路径,
config.SetDocumentationProvider(new XmlDocumentationProvider(HttpContext.Current.Server.MapPath("~/App_Data")))
1.2、打开 XmlDocumentationProvider 类文件
1.2.1、找到类中找到变量 _documentNavigator,修改如下所示
//private XPathNavigator _documentNavigator; private List<XPathNavigator> _documentNavigators = new List<XPathNavigator>();
1.2.2、找到类的方法 XmlDocumentationProvider ,修改如下:
public XmlDocumentationProvider(string documentPath) { if (documentPath == null) { throw new ArgumentNullException("documentPath"); } //注释这两行 //XPathDocument xpath = new XPathDocument(documentPath); //_documentNavigator = xpath.CreateNavigator(); //新增如下 DirectoryInfo theFolder = new DirectoryInfo(documentPath); foreach (var item in theFolder.GetFiles("*.xml")) { XPathDocument xpath = new XPathDocument(Path.Combine(documentPath, item.Name)); _documentNavigators.Add(xpath.CreateNavigator()); } }
1.2.3、在 XmlDocumentationProvider 方法之后添如下方法
private XPathNavigator SelectSingleNode(string selectExpression) { foreach (var navigator in _documentNavigators) { var propertyNode = navigator.SelectSingleNode(selectExpression); if (propertyNode != null) return propertyNode; } return null; }
1.2.4、修改 类中所有引用为 _documentNavigator.SelectSingleNode 的地方,修改成 新增的方法 SelectSingleNode
注意:新建的控制器必须继承 ApiController 否则界面不会展示控制器接口!
2、添加接口详情测试按钮
2.1、通过Nuget包管理添加 webapitestclient ,添加完成后找到这个 Areas->HelpPage->Views->Help 路径下的 Api.cshtml 文件,修改如下
@using System.Web.Http @using API.Areas.HelpPage.Models @model HelpPageApiModel @*解析html*@ @section Scripts { @Html.DisplayForModel("TestClientDialogs") @Html.DisplayForModel("TestClientReferences") } @{ var description = Model.ApiDescription; ViewBag.Title = description.HttpMethod.Method + " " + description.RelativePath; } <link type="text/css" href="~/Areas/HelpPage/HelpPage.css" rel="stylesheet" /> <div id="body" class="help-page"> <section class="featured"> <div class="content-wrapper"> <p> @Html.ActionLink("Help Page Home", "Index") </p> </div> </section> <section class="content-wrapper main-content clear-fix"> @Html.DisplayForModel() </section> </div>