services.AddSwaggerGen() 给出错误

问题描述 投票:0回答:7

我想做的就是向 ASP.Net Core 应用程序添加 swagger。我正在观看教程,我看到他们所做的就是在 Startup.cs 文件的配置服务区域下添加

services.AddSwaggerGen();
。就像 MVC 这样的任何普通服务一样......但我收到一个错误:

没有给出与所需的形式参数“setupAction”相对应的参数...

我没有看到有人为

services.AddSwaggerGen()
提供任何形式的论据,所以有人知道我在这里缺少什么吗?

我添加了

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

c# asp.net-core swagger
7个回答
166
投票

我遇到了问题,

IServiceCollection 不包含“AddSwaggerGen”的定义

事实证明,我安装了 Swashbuckle.AspNetCore.Swagger nuget 包而不是 Swashbuckle.AspNetCore

在 .NET Core 3 中,存在一些问题,如此处所述。解决方案是将以下内容添加到项目文件中,替换之前的版本。

<PackageReference Include="Swashbuckle.AspNetCore" Version="5.0.0-rc2" />
<PackageReference Include="Swashbuckle.AspNetCore.SwaggerUI" Version="5.0.0-rc2" />

19
投票

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

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

9
投票

发生这种情况是因为 ASP.NET Core 中

AddSwaggerGen()
扩展方法的实现要求您提供
Action<SwaggerGenOptions>
参数作为设置操作。例如:

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

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

更新: 在以前的版本中,他们有不接受任何参数的

AddSwaggerGen()
扩展方法,但此调用伴随着
ConfigureSwaggerDocument(Action<SwaggerGenOptions> setupAction)
调用。我猜他们只是摆脱了
ConfigureSwaggerDocument
并将设置操作添加到
AddSwaggerGen()
方法中。话虽如此,您的教程似乎展示了如何设置 Swagger 的过时版本。


7
投票

迟到的答案,但作为这个问题的新更新,我只是注意到为了使

AddSwaggerGen
在.NET Core 3中正常工作,你需要使用
OpenApiInfo
而不是
Info
。所以你的新
AddSwaggerGen
应该是这样的:

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

您还需要将以下内容添加到您的

using
指令中:

using Microsoft.OpenApi.Models;

在此处了解更多信息https://learn.microsoft.com/en-us/aspnet/core/tutorials/getting-started-with-swashbuckle?view=aspnetcore-3.1&tabs=visual-studio


2
投票

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

要修复 - 将存储库移动到其他位置,以便路径没有空间。 我使用的是 Swashbuckle.AspNetCore 包的 6.1.4 版本。


0
投票

通过在当前项目中安装“Swashbuckle.AspNetCore”的 Nuget 包,它对我有用。 https://github.com/domaindrivendev/Swashbuckle.AspNetCore


0
投票

在我的项目中出现此问题是因为 Swashbuckle.AspNetCore 不更新。从“工具”选项卡更新此包[选择管理 Nuget 包以获取解决方案][1] [1]:https://i.stack.imgur.com/O1JOR.jpg 并单击 Nuget 包管理器,然后将 Swashbuckle.AspNetCore 包更新到最新版本。 谢谢你

© www.soinside.com 2019 - 2024. All rights reserved.