将Web API和API文档添加到现有MVC项目中

pcb*_*iss 11 c# asp.net-web-api

我已成功将a添加web api controller到现有MVC4应用程序中.

我想拥有新的web api示例中提供的api文档功能(ex. http://sample.hostname.com/help).我相信这些都使用了这ApiExplorer门课.我尝试将HelpPage区域复制到我的项目中,但是我收到了错误

"无法构造String类型.您必须配置容器以提供此值"

当我尝试导航帮助.

我该怎么做才能添加API的自动文档?

Adr*_*own 8

正如其他人已经说过的那样,您必须先安装NuGet包Microsoft.AspNet.WebApi.HelpPage.这将在您的应用程序中创建一个新的HelpPage区域,其中包含显示文档所需的视图,模型和控制器.

但是,生成的HelpController包含重载的构造函数:

public HelpController(HttpConfiguration config)
{
    Configuration = config;
}
Run Code Online (Sandbox Code Playgroud)

这似乎不适合Unity(或可能是任何类型的DI容器).你收到这个错误:

[InvalidOperationException: The type String cannot be constructed. You must configure the container to supply this value.]
Run Code Online (Sandbox Code Playgroud)

删除此重载,它应该工作.

还发现了另一个参考:http: //www.stefan-scheller.com/2013/08/the-type-string-cannot-be-constructed-web-api-with-unity/


Car*_*arl 6

V5.2.2具有以下代码:

public HelpController()
        : this(GlobalConfiguration.Configuration)
    {
    }

    public HelpController(HttpConfiguration config)
    {
        Configuration = config;
    }
Run Code Online (Sandbox Code Playgroud)

在HelpController中

Unity使用具有最多参数的构造函数,因此为了使它使用无参数构造函数,我将第二个重载更改为protected:

    protected HelpController(HttpConfiguration config)
    {
        Configuration = config;
    }
Run Code Online (Sandbox Code Playgroud)

帮助页面又回来了


Kir*_*lla 1

查看 Yao 的博客,了解帮助页面:

http://blogs.msdn.com/b/yao Huang1/