Чтобы задать путь Json Swagger

#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()}"