服务,AddSwaggerGen()给出错误

gcxthw6b  于 2023-01-17  发布在  其他
关注(0)|答案(6)|浏览(137)

我所要做的就是给ASP.NET核心应用程序添加swagger。我正在看一个教程,我看到他们所做的就是在Startup.cs文件的配置服务区域下添加services.AddSwaggerGen();。就像任何普通的服务一样,比如MVC...但是我得到了一个错误:
没有给定与所需形参“setupAction”对应的参数...
我没有看到任何人为services.AddSwaggerGen()提供任何类型的参数,所以有人知道我在这里错过了什么吗?
我已经添加了SwashBuckler.AspNetCore依赖项,所以swagger在应用程序中。只是不知道为什么它是红色的,并给出上面的错误。

mspsb9vt

mspsb9vt1#

我有问题,那
IServiceCollection不包含“AddSwaggerGen”的定义
我发现,我安装了Swashbuckle.AspNetCore.Swaggernuget软件包,而不是Swashbuckle.AspNetCore
在.NET Core 3中,存在一些问题,如讨论的here。解决方案是将以下内容添加到项目文件中,替换以前的版本。

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

izkcnapc2#

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

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

您可以了解更多关于如何设置 Swagger 与ASP.NET核心应用程序here

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

wr98u20j

wr98u20j3#

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

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

mftmpeh84#

回答晚了,但作为对这个问题的最新更新,我刚刚注意到为了使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

qzlgjiam

qzlgjiam5#

如果您在尝试部署Web应用程序并将Swagger规范添加到Azure中的API管理(从Visual Studio)时遇到此问题-〉检查您的存储库的本地路径-如果其中有空格,它将失败。
要修复-将您的repo移动到不同的位置,以便路径没有空间。我使用的是Swashbuckle.AspNetCore包的6. 1. 4版本。

yzxexxkh

yzxexxkh6#

它是为我工作的安装Nuget包“Swashbuckle.aspNetCore”在当前项目中。https://github.com/domaindrivendev/Swashbuckle.AspNetCore

相关问题