Ни один конструктор для типа 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 в вашем автозагрузке приложения.

Другие вопросы по тегам