Код: Выделить всё
app.UseSwagger();
< /code>
, который создает файл swagger.json, который начинается с: < /p>
"openapi": "3.0.1",
< /code>
И все хорошо. Если я просто обновлю пакет без изменения кода, моя страница документации показывает сообщение об ошибке: < /p>
Невозможно отобразить это определение < /p>
Предоставленное определение не указано в действительном поле версии. Поддерживаемые поля версий-это Swagger: «2.0» и те, которые соответствуют OpenAPI: 3.x.y (например, OpenAPI: 3.1.0). < /P>
< /blockquote>
В данном случае файл Swagger.json начинается с: < /p>
, что, кажется, должно быть действительным. Я могу изменить код C# на это: < /p>
app.UseSwagger(options => options.OpenApiVersion = Microsoft.OpenApi.OpenApiSpecVersion.OpenApi2_0);
< /code>
и отображается страница, создавая файл swagger.json, который начинается с: < /p>
"swagger": "2.0",
< /code>
, который в основном работает, но создает еще одну проблему, в которую я не буду здесь. Если я изменю openAPI2_0 Код: Выделить всё
app.UseSwaggerUI(c => { c.SwaggerEndpoint("./v1/swagger.json", "MyServiceAPI"); });
Код: Выделить всё
//do not call this otherwise get /swagger/index.html page. We have our own page.
//app.UseSwaggerUI(); //dont configure options here. Do it in ConfigureServices so we can use DI with SwaggerUIOptions.
var filePath = Path.Combine(System.AppContext.BaseDirectory, "SI.Gbrmpa.Eotr.Web.xml");
services.AddSwaggerGen(options =>
{
options.IncludeXmlComments(filePath);
options.AddSecurityDefinition("bearerAuth", new OpenApiSecurityScheme
{
Type = SecuritySchemeType.Http,
Scheme = "bearer",
BearerFormat = "JWT",
Description = "JWT Authorization header using the Bearer scheme."
});
options.AddSecurityRequirement(new OpenApiSecurityRequirement
{
{
new OpenApiSecurityScheme
{
Reference = new OpenApiReference { Type = ReferenceType.SecurityScheme, Id = "bearerAuth" }
},
new string[] {}
}
});
options.SchemaFilter();
});
services.AddOptions()
.Configure((swaggerUiOptions) => //configure here and not app.UseSwaggerUI() so that we can use DI with SwaggerUIOptions
{
swaggerUiOptions.SwaggerEndpoint("/swagger/v1/swagger.json", "v1");
});
< /code>
Таким образом, мы уже делаем эквивалент того, что предлагают эти ответы. Как я уже сказал, это уже работает с пакетом V7.3.2, поэтому, кажется, знает, где найти файл Swagger.json, и определение версии в этом файле также, кажется, понимается. Файл находится в том же месте и определение версии, в то время как более высокая версия, все еще кажется действительной, поэтому я не уверен, в чем проблема для более нового пакета.
Подробнее здесь: https://stackoverflow.com/questions/797 ... re-to-v9-x
Мобильная версия