1、一个普通的webapi项目——在nuget中添加Microsoft.AspNet.WebApi.HelpPage,我目前看到的是5.2.7版本,选择安装。
安装完成后,直接运行程序,发现有错误:
[A]System.Web.WebPages.Razor.Configuration.HostSection 无法强制转换为 [B]System.Web.WebPages.Razor.Configuration.HostSection。类型 A 源自“System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”(在上下文“Default”中的“C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Web.WebPages.Razor\v4.0_2.0.0.0__31bf3856ad364e35\System.Web.WebPages.Razor.dll”位置处)。类型 B 源自“System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”(在上下文“Default”中的“C:\Users\Administrator\AppData\Local\Temp\Temporary ASP.NET Files\vs\7c8c73ea\276d1f7a\assembly\dl3\bcb56233\13f69195_030fd701\System.Web.WebPages.Razor.dll”位置处)。
解决办法:
打开Views目录的Web.config文件,替换sectionGroup节点。
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
再次允许程序,正常!
此时你可以可以打开help页面,http://localhost:3048/help,但打开后帮助文档没有内容
2. 注册 Area
protected void Application_Start() { AreaRegistration.RegisterAllAreas(); }
注:我打开Global.asax.cs,原先就有这段代码,没有再次手工添加
3. HelpPageConfig 启用 SetDocumentationProvider
WebApplication/Areas/HelpPage/App_Start/HelpPageConfig.cs 目录下,找到下面代码,并取消注释(App_Data 改为 bin):
public static void Register(HttpConfiguration config) { Uncomment the following to use the documentation from XML documentation file. config.SetDocumentationProvider(new XmlDocumentationProvider(HttpContext.Current.Server.MapPath("~/bin/XmlDocument.xml"))); }
4. WebApplication Build 配置 XmlDocument 输出路径
5. ValuesController 代码
我的工程是原先参数定义没有按照规范,把json封装成了string字段传过来再解析,更好的参数定义方式是直接作为一个一个参数或者封装成类,网上很多资料可以参考。