Services.AddSwaggerGen(), дающий ошибку
Все, что я пытаюсь сделать, это добавить swagger в основное приложение ASP.Net. Я смотрю учебное пособие, и все, что я вижу, это добавить services.AddSwaggerGen();
в области сервисов configure в файле Startup.cs. Как и любой обычный сервис, такой как MVC... Но я получаю сообщение об ошибке:
Нет аргументов, которые соответствуют требуемому формальному параметру 'setupAction'...
Я не вижу, чтобы кто-нибудь предоставлял какие-либо аргументы services.AddSwaggerGen()
, так кто-нибудь знает, что мне здесь не хватает?
Я добавил зависимость SwashBuckler.AspNetCore
, поэтому в приложении используется swagger. Просто не знаю, почему он краснеет и дает ошибку выше.
Ответы
Ответ 1
Это происходит потому, что реализация AddSwaggerGen()
расширения AddSwaggerGen()
в ASP.NET Core требует предоставления аргумента Action<SwaggerGenOptions>
который служит действием установки. Например:
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new Info { Title = "My API", Version = "v1" });
});
Вы можете узнать больше о том, как настроить Swagger с приложением ASP.NET Core здесь.
ОБНОВЛЕНИЕ: В предыдущих версиях у них был метод расширения AddSwaggerGen()
принимающий аргументов, но этот вызов сопровождался вызовом ConfigureSwaggerDocument(Action<SwaggerGenOptions> setupAction)
. Я предполагаю, что они только что избавились от ConfigureSwaggerDocument
и добавили установочное действие в AddSwaggerGen()
. При этом кажется, что ваш урок показывает, как установить устаревшую версию Swagger.
Ответ 2
У меня была проблема, что
IServiceCollection не содержит определения для AddSwaggerGen
Оказывается, что я установил пакет Nuget Swashbuckle.AspNetCore.Swagger вместо Swashbuckle.AspNetCore.
В .NET Core 3 есть некоторые проблемы, которые обсуждаются здесь. Решение состоит в том, чтобы добавить следующее в файл проекта, заменив предыдущую версию.
<PackageReference Include="Swashbuckle.AspNetCore" Version="5.0.0-rc2" />
<PackageReference Include="Swashbuckle.AspNetCore.SwaggerUI" Version="5.0.0-rc2" />