Ни один конструктор для типа SwaggerGenerator не может быть создан с использованием служб из контейнера служб и значений по умолчанию
Я пытаюсь добавить 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"); });
Я не уверен, что мне не хватает пакета, одна из тех, что у меня, - неправильная версия, или мне не хватает набора настроек, который я предоставляю.
3 ответа
Как отметил автор в своем комментарии, это решило для меня добавление ссылки на Api Explorer в ConfigureServices
,
Конкретно требуемая строка была:
services.AddMvcCore()
.AddApiExplorer();
.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();
}
Вы должны зарегистрировать "services.AddMvc();" в "IServiceCollection"
и настройте "app.UseMvc()" в IApplicationBuilder в вашем автозагрузке приложения.