services.AddSwaggerGen()给出错误

Dan*_*son 15 c# swagger asp.net-core

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

没有给出对应于所需形式参数'setupAction'的参数...

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

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

Mik*_*Mik 98

我有问题,那

IServiceCollection不包含'AddSwaggerGen'的定义

我想说,我安装了Swashbuckle.AspNetCore.Swagger nuget包而不是Swashbuckle.AspNetCore.

希望能帮到某人;)

  • 只是补充一下,一年后,VS2019 已经发布了,现在,当我安装最新版本(v4.0.1)的“Swashbuckle.AspNetCore”时,它在构建时确实会抛出此错误。如果我删除该版本,然后添加同一库的 v3.x,那么它就可以正常构建。所以,小心点……这东西又变了…… (2认同)

Kar*_* VK 19

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

Microsoft.OpenApi
Swashbuckle.AspNetCore.Swagger
Swashbuckle.AspNetCore.SwaggerGen
Swashbuckle.AspNetCore.SwaggerUI
Run Code Online (Sandbox Code Playgroud)

  • 这就是我的答案,我明确需要删除 Swashbuckle.AspNetCore 并仅使用这四个与 swagger 相关的包。 (2认同)

Ale*_*ich 7

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

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

您可以在此处了解有关如何使用ASP.NET Core应用程序设置Swagger的更多信息.

更新: 在以前的版本中,他们有AddSwaggerGen()扩展方法不接受任何参数,但这个调用伴随着调用ConfigureSwaggerDocument(Action<SwaggerGenOptions> setupAction).我猜他们刚刚摆脱ConfigureSwaggerDocument并为AddSwaggerGen()方法添加了设置动作.这就是说你的教程似乎显示了如何设置过时的Swagger版本.


Sal*_*ari 7

迟到的答案,但作为这个问题的新更新,我刚刚注意到为了AddSwaggerGen在 .NET Core 3 中正常工作,您需要使用OpenApiInfo而不是Info. 所以你的新AddSwaggerGen应该是这样的:

services.AddSwaggerGen(c =>
{
    c.SwaggerDoc("v1", new OpenApiInfo { Title = "The API", Version = "v1" });
});
Run Code Online (Sandbox Code Playgroud)

您还需要将以下内容添加到您的using指令中:

using Microsoft.OpenApi.Models;
Run Code Online (Sandbox Code Playgroud)

在这里阅读更多信息https://learn.microsoft.com/en-us/aspnet/core/tutorials/getting-started-with-swashbuckle?view=aspnetcore-3.1&tabs=visual-studio