我想要做的就是向ASP.Net Core应用程序添加招摇。我正在观看一个教程,我看到他们所做的就是在Startup.cs文件的configure services区域下添加services.AddSwaggerGen();
。像任何像MVC这样的普通服务......但是我收到了一个错误:
没有任何参数对应于所需的形式参数'setupAction'...
我没有看到有人向services.AddSwaggerGen()
提供任何论据,所以有谁知道我在这里缺少什么?
我已经添加了SwashBuckler.AspNetCore
依赖项,因此应用程序中存在swagger。只是不知道为什么它是红色并给出上述错误。
答案 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
了解更多信息
答案 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 版。