Swashbuckle.AspNetCore: «Операции не определены в спецификации!» проблема после обновления пакета Microsoft.AspNetCore.Mvc.ApiExplorer до версии 2.2.0 - PullRequest
1 голос
/ 30 мая 2019

у нас есть проект .net core 2.1 mvc webapi, который использует Swagger.мы используем следующие пакеты:

<PackageReference Include="Swashbuckle.AspNetCore" Version="3.0.0" />
<PackageReference Include="Swashbuckle.AspNetCore.Annotations" Version="3.0.0" />
<PackageReference Include="Swashbuckle.AspNetCore.Filters" Version="4.3.0" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.ApiExplorer" Version="2.1.2" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Versioning.ApiExplorer" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="2.1.1" />

swashbuckle настроен следующим образом:

services.AddMvcCore().AddVersionedApiExplorer();
services.AddApiVersioning();
services.AddSwaggerGen();

все работает в такой настройке (/swagger/v1/swagger.json имеет все операции и определения, и пользовательский интерфейс отображается правильно -> имея все контроллеры и действия и т. д.)

мы пытаемся перевести наш .net core проект с 2.1 на 2.2 .net core.

Для этого (без предупреждений) нам нужнообновить Microsoft.AspNetCore.Mvc.ApiExplorer nuget с 2.1.2 до 2.2.0.

После этого обновления nuget swagger.json (/swagger/v1/swagger.json) не содержит "paths": {} и "definitions": {}, что приводит к появлению свагерского интерфейса.без контроллеров / действий (отображается: No operations defined in spec!

после обновления пакета эти версии пакета обновляются:

<PackageReference Include="Microsoft.AspNetCore.Mvc.ApiExplorer" Version="2.2.0" /> //was 2.1.2
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="2.2.0" /> //was 2.1.1

Я пытался обновить версию Swashbuckle до v4.0.0, ноне удалось решить проблему.

Что мне не хватает, какие пакеты нужно обновить, чтобы swagger.json генерировалось правильно при использовании пакета Microsoft.AspNetCore.Mvc.ApiExplorer 2.2.0? Или я что-то упустил?

1 Ответ

0 голосов
/ 06 июня 2019

Я нашел, как решить эту проблему (также опубликовано: https://github.com/domaindrivendev/Swashbuckle.AspNetCore/issues/1166#issuecomment-497800414)

Короче говоря: мне нужно было изменить мой SDK HOST проекта: с «Microsoft.NET.Sdk» на «Microsoft».NET.Sdk.Web '.

Я не нашел явно, так должно быть точно (но шаблон Microsoft по умолчанию использует этот SDK в .net core 2.2)

, поэтомубыло бы здорово, если бы кто-то мог объяснить, почему .Web SDK нужно использовать после перехода с .net core 2.1 на 2.2

...