Не удалось загрузить определение API Fetch Error при развертывании, но нормально на локальном хосте - PullRequest
0 голосов
/ 23 марта 2020

Я обновляю свой API с netcore2.1 до 3.1

Когда я работаю на локальном хосте, пользовательский интерфейс работает нормально.

При развертывании через Azure DevOps и go на myapplication / myapi / swagger. html url Я получаю

Failed to load API definition 
Fetch Error
Service Unavailable /myapi/swagger/v1/swagger/json

Все же я могу видеть json в

myapplication/myapi/swagger/v1/swagger.json

У меня есть следующее

   public static IApplicationBuilder UseSwaggerDocumentation(this IApplicationBuilder app)
    {
        app.UseSwagger(c =>

            c.RouteTemplate = "myapi/swagger/{documentName}/swagger.json"
        );

        app.UseSwaggerUI(c =>
        {

            c.SwaggerEndpoint("/myapi/swagger/v1/swagger.json", "Versioned API v1.0");

            c.RoutePrefix = "myapi/swagger";

        });

        return app;
    }

Я использую

Swashbuckle.AspNetCore (5.2.0)

1 Ответ

1 голос
/ 23 марта 2020

Я нашел следующее сработало.

    public static IApplicationBuilder UseSwaggerDocumentation(this IApplicationBuilder app)
    {
        app.UseSwagger(c =>

            c.RouteTemplate = "myapi/{documentName}/swagger.json"
        );

        app.UseSwaggerUI(c =>
        {

            c.SwaggerEndpoint("./v1/swagger.json", "Versioned API v1.0");

            c.RoutePrefix = "myapi";

        });

        return app;
    }

Состояние документы

При использовании каталогов с IIS или обратного прокси-сервера установите конечную точку Swagger для относительного пути с использованием префикса ./ , Например, ./swagger/v1/swagger.json. Использование /swagger/v1/swagger.json заставляет приложение искать файл JSON по истинному root URL (плюс префикс маршрута, если используется). Например, используйте http://localhost: //swagger/v1/swagger.json вместо http://localhost: ///swagger/v1/swagger.json.

Однако, к сожалению, мое решение не работает с Autorest. Таким образом я задал другой вопрос

...