Don*_*ana 24 c# swagger swagger-3.0
我正在尝试将Swagger添加到我的项目中。收到的错误如下。
无法使用服务容器中的服务和默认值实例化“ Swashbuckle.AspNetCore.SwaggerGen.SwaggerGenerator”类型的构造函数。
由于我尚未对Swagger二进制文件本身进行任何更改,因此仅安装了软件包Swashbuckle.AspNetCore和Swashbuckle.AspNetCore.Swagger(均为4.0.1版),我假设这与配置有关。按照这里的建议,我已经设置了如下所示的配置。
services.AddSwaggerGen(_ =>
{
_.SwaggerDoc("v1", new Info { Version = "v1", Title = "My API" });
});
app.UseSwagger();
app.UseSwaggerUI(_ => { _.SwaggerEndpoint("/swagger/v1/swagger.json", "API docs"); });
Run Code Online (Sandbox Code Playgroud)
我不确定是否丢失了一个软件包,是否其中一个是错误的版本,或者我提供的设置配置是否足够。
小智 41
正如提问者在评论中指出的那样,为我解决了这个问题的是在中添加了对Api Explorer的引用ConfigureServices。
具体来说,所需的行是:
services.AddMvcCore()
.AddApiExplorer();
Run Code Online (Sandbox Code Playgroud)
.Net 7 更新的解决方案:
我知道(TS Taylor)的答案是正确的,但对于在 .net 7 中寻找更新答案的人来说:
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddMvcCore();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
Run Code Online (Sandbox Code Playgroud)