Ada*_*itt 9 documentation documentation-generation asp.net-web-api
我有一个预先存在的MVC应用程序,我使用Nuget添加了Web API和Web API自我文档.虽然Web API控制器运行正常(返回对HTTP请求的有效响应),但帮助控制器未找到任何要记录的Web API方法.
在帮助控制器索引操作"Configuration.Services.GetApiExplorer().ApiDescriptions"返回0结果.
填充ApiDescriptions的是什么,我需要设置任何配置设置以将我的API暴露给文档吗?
帮助区域与我的应用程序的其余部分是一个单独的区域.这是否导致找到控制器的部件找不到我的控制器?此外,我甚至添加了一个帮助剪切到HelpController本身,这仍然没有导致API描述.
我的API控制器也有特殊的路由,所以我不确定这是否相关.
如第一篇文章所述,Glimpse就是罪魁祸首,这个解决方案为我解决了这个问题:
<glimpse defaultRuntimePolicy="On" endpointBaseUri="~/Glimpse.axd">
<inspectors>
<ignoredTypes>
<add type="Glimpse.AspNet.Inspector.RoutesInspector, Glimpse.AspNet"/>
</ignoredTypes>
</inspectors>
</glimpse>
Run Code Online (Sandbox Code Playgroud)
这也是一个已知问题,并在此Glimpse GitHub问题中描述了解决方法.
我有同样的问题,我不使用Glimpse,而是这样解决问题:
在ProjectName\Areas\HelpPage\Controllers\HelpController.cs文件注释中,由于未称为隐式构造public HelpController() : this(GlobalConfiguration.Configuration)函数,所以构造函数 默认被称为带参数的构造函数, public HelpController(HttpConfiguration config)并且此Configuration属性的初始化是错误的。您可以像这样解决这个问题:
解决方案1: 注释/删除构造函数。
public class HelpController : Controller
{
private const string ErrorViewName = "Error";
// public HelpController()
// : this(GlobalConfiguration.Configuration)
// {
// }
// public HelpController(HttpConfiguration config)
// {
// Configuration = config;
// }
/// <summary>
/// GlobalConfiguration By default
/// </summary>
protected static HttpConfiguration Configuration
{
get { return GlobalConfiguration.Configuration; }
}
public ActionResult Index()
{
ViewBag.DocumentationProvider = Configuration.Services.GetDocumentationProvider();
return View(Configuration.Services.GetApiExplorer().ApiDescriptions);
}
....
Run Code Online (Sandbox Code Playgroud)
解决方案2: 通过添加此属性[InjectionConstructor]来注入默认构造函数。
public class HelpController : Controller
{
private const string ErrorViewName = "Error";
[InjectionConstructor]
public HelpController()
: this(GlobalConfiguration.Configuration)
{
}
public HelpController(HttpConfiguration config)
{
Configuration = config;
}
/// <summary>
/// GlobalConfiguration By default
/// </summary>
protected static HttpConfiguration Configuration { get; private set; }
....
Run Code Online (Sandbox Code Playgroud)
问题解决了。
| 归档时间: |
|
| 查看次数: |
3567 次 |
| 最近记录: |