无法使用服务容器中的服务和默认值实例化 SwaggerGenerator 类型的构造函数

No constructor for type SwaggerGenerator can be instantiated using services from the service container and default values

我正在尝试将 Swagger 添加到我的项目中。收到的错误如下。

No constructor for type 'Swashbuckle.AspNetCore.SwaggerGen.SwaggerGenerator' can be instantiated using services from the service container and default values.

因为我没有对 Swagger 二进制文件本身进行任何更改,所以只安装了包 Swashbuckle.AspNetCoreSwashbuckle.AspNetCore.Swagger(均在 4.0.1 版中)我假设它与配置有关。按照建议 here,我设置了如下所示的配置。

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

app.UseSwagger();
app.UseSwaggerUI(_ => { _.SwaggerEndpoint("/swagger/v1/swagger.json", "API docs"); });

我不确定我是否缺少某个包,我拥有的其中一个版本是否错误,或者我提供的设置配置是否足够。

您应该在 IServiceCollection 中注册 services.AddMvc();,并在您应用程序的 Startup.cs

中配置 app.UseMvc() 中的 IApplicationBuilder

正如提问者在评论中指出的那样,为我解决这个问题的方法是在 ConfigureServices.

中添加对 Api Explorer 的引用

具体需要的行是:

services.AddMvcCore()
        .AddApiExplorer();