services.AddSwaggerGen()给出错误

时间:2017-04-30 14:53:18

标签: c# asp.net-core swagger

我想要做的就是向ASP.Net Core应用程序添加招摇。我正在观看一个教程,我看到他们所做的就是在Startup.cs文件的configure services区域下添加services.AddSwaggerGen();。像任何像MVC这样的普通服务......但是我收到了一个错误:

  

没有任何参数对应于所需的形式参数'setupAction'...

我没有看到有人向services.AddSwaggerGen()提供任何论据,所以有谁知道我在这里缺少什么?

我已经添加了SwashBuckler.AspNetCore依赖项,因此应用程序中存在swagger。只是不知道为什么它是红色并给出上述错误。

4 个答案:

答案 0 :(得分:5)

这是因为在ASP.NET Core中实现AddSwaggerGen()扩展方法要求您提供用作设置操作的Action<SwaggerGenOptions>参数。例如:

services.AddSwaggerGen(c =>
{
    c.SwaggerDoc("v1", new Info { Title = "My API", Version = "v1" });
});

您可以详细了解如何使用ASP.NET核心应用here设置Swagger。

<强>更新 在以前的版本中,他们使用AddSwaggerGen()扩展方法不接受任何参数,但此调用伴随着调用ConfigureSwaggerDocument(Action<SwaggerGenOptions> setupAction)。我猜他们刚刚摆脱ConfigureSwaggerDocument并将设置操作添加到AddSwaggerGen()方法。据说,您的教程似乎显示了如何设置Swagger的过时版本。

答案 1 :(得分:3)

最新答案,但是作为对此问题的新更新,我刚刚注意到,为了使AddSwaggerGen在.NET Core 3中可以正常运行,您需要使用OpenApiInfo而不是{{1} }。因此,您的新Info应该是这样的:

AddSwaggerGen

还需要在services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Title = "The API", Version = "v1" }); }); 指令中添加以下内容:

using

在此处https://docs.microsoft.com/en-us/aspnet/core/tutorials/getting-started-with-swashbuckle?view=aspnetcore-3.1&tabs=visual-studio

了解更多信息

答案 2 :(得分:0)

对于.Net核心项目,您需要安装四个软件包。最好使用Nuget软件包管理器,以便采用适当的所需版本。

Microsoft.OpenApi
Swashbuckle.AspNetCore.Swagger
Swashbuckle.AspNetCore.SwaggerGen
Swashbuckle.AspNetCore.SwaggerUI

答案 3 :(得分:0)

如果您在尝试部署 Web 应用程序并将 Swagger 规范添加到 Azure 中的 API 管理(来自 Visual Studio)时遇到此问题-> 检查您的存储库的本地路径-如果其中有空格,则会失败。

修复 - 将您的存储库移动到不同的位置,这样路径就没有空间了。 我使用的是 Swashbuckle.AspNetCore 包的 6.1.4 版。