【问题标题】:Failed to load API definition Fetch Error, when deployed but fine on localhost部署时无法加载 API 定义获取错误,但在 localhost 上很好
【发布时间】:2020-03-23 00:59:14
【问题描述】:

我正在将我的 api 从 netcore2.1 升级到 3.1

当我在 localhost 上运行时,UI 工作正常。

当我通过 Azure DevOps 部署并转到 myapplication/myapi/swagger.html 网址时,我得到

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)

【问题讨论】:

  • 我在某处读到 iis Express 的行为与 IIS 8.5 不同

标签: azure-devops swagger swagger-ui


【解决方案1】:

我发现以下方法有效。

    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;
    }

docs 状态

如果使用带有 IIS 或反向代理的目录,请设置 Swagger 使用 ./ 前缀指向相对路径的端点。例如, ./swagger/v1/swagger.json。使用 /swagger/v1/swagger.json 指示 用于在 URL 的真正根目录中查找 JSON 文件的应用程序(加上 路由前缀(如果使用)。例如,使用 http://localhost://swagger/v1/swagger.json 代替 的 http://localhost:///swagger/v1/swagger.json。

但不幸的是,我的解决方案不适用于 Autorest。 于是我问another question

【讨论】:

猜你喜欢
  • 2019-11-13
  • 2020-06-06
  • 1970-01-01
  • 2023-02-22
  • 2019-11-18
  • 2015-05-01
  • 1970-01-01
  • 2019-01-11
  • 2020-07-10
相关资源
最近更新 更多