#asp.net-core #swagger #swashbuckle.aspnetcore
Вопрос:
У меня есть требование установить swagger.json
путь к файлу, как показано ниже, в среде контроля качества:
https://api-qa.com/epservice/swagger/v1/swagger.json
Для этого вот код, который я предоставил в configure()
методе в Startup.cs
файле:
string swaggerBasePath = Environment.GetEnvironmentVariable("SERVICE_NAME");
string apiVersion = Environment.GetEnvironmentVariable("API_VERSION");
app.UseSwagger(c =>
{
c.PreSerializeFilters.Add((swagger, httpReq) =>
{
swagger.Servers = new List<OpenApiServer> { new OpenApiServer { Url = $"https://{httpReq.Host.Value}/{swaggerBasePath}/{apiVersion}" } };
});
});
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint($"{swaggerBasePath}/swagger/v1/swagger.json", $"API {apiVersion}");
});
И значение переменной среды SERVICE_NAME="epservice"
и API_VERSION="v1"
Но когда я пытаюсь это сделать, я получаю ошибку выборки с неправильным путем ниже:
Ошибка выборки Не найдена https://api-qa.com/epservice/swagger/epservice/swagger/v1/swagger.json
Проблема проявляется epservice/swagger
дважды в пути.
Комментарии:
1. вы добавили услуги? Добавляет функцию Waggergen() в метод ConfigureServices ()?
2. «Проблема в том, что в пути дважды отображается epservice/swagger.», попробуйте установить точку останова в методе настройки и проверьте, отображается ли
epservice/swagger
путь swaggerBasePath дважды? Если у него их дваepservice/swagger
, попробуйте изменить значение, если у него только одноepservice/swagger
, попробуйте удалить swaggerBasePath, обновленный код выглядит следующим образом:c.SwaggerEndpoint("/swagger/v1/swagger.json", $"API {apiVersion}");
.3. Попробуйте решение в комментариях выше. Кроме того, вы можете попробовать изменить URL-адрес в
PreSerializeFilters
— >Url = $"{request.Scheme}://{request.Host.Value}{request.Headers["X-Forwarded-Prefix"].FirstOrDefault()}"