7

我创建了一个 Azure API 应用程序并将其部署到 Azure。起初,我从门户获取 Swagger 文件没有问题(即通过单击 API App 刀片上的“API 定义”按钮),但在某些时候它停止工作。

我已经在App_Start\SwaggerConfig.cs. 当我在本地调试时,我可以导航到http://localhost:12345/Swagger以进入 Swagger UI 并下载 Swagger 文件,一切正常。当我转到门户时,尝试访问https://microsoft-apiappad6cxxxxxxxxxxxx426c23a66.azurewebsites.net:443/swagger/docs/v1时出现 500 错误。

我试过删除 API 应用程序并重新部署它......不走运。我尝试过开始一个新项目并使用它创建相同的界面并将其部署到 Azure ......每次都有效(当然)。

我将在此处包含 Swagger 文件,以防万一,但我不明白的是:为什么 Swashbuckle 会在本地工作,但不能在 Azure 中工作?

{
"swagger": "2.0",
"info": {
    "version": "v1",
    "title": "StorefrontApi"
},
"host": "localhost:52912",
"schemes": [
    "http"
],
"paths": {
    "/api/v1/storefront/applications": {
        "get": {
            "tags": [
                "GET"
            ],
            "operationId": "Storefront_Applications",
            "consumes": [],
            "produces": [
                "application/json",
                "text/json",
                "application/xml",
                "text/xml"
            ],
            "responses": {
                "200": {
                    "description": "OK",
                    "schema": {
                        "$ref": "#/definitions/Object"
                    }
                }
            },
            "deprecated": false
        }
    },
    "/api/v1/storefront/aurorastatus": {
        "get": {
            "tags": [
                "GET"
            ],
            "operationId": "Storefront_AuroraStatus",
            "consumes": [],
            "produces": [
                "application/json",
                "text/json",
                "application/xml",
                "text/xml"
            ],
            "parameters": [
                {
                    "name": "auroraSerialNumber",
                    "in": "query",
                    "required": true,
                    "type": "string"
                }
            ],
            "responses": {
                "200": {
                    "description": "OK",
                    "schema": {
                        "$ref": "#/definitions/Object"
                    }
                }
            },
            "deprecated": false
        }
    },
    "/api/v1/storefront/order": {
        "post": {
            "tags": [
                "POST"
            ],
            "operationId": "Storefront_Order",
            "consumes": [
                "application/json",
                "text/json",
                "application/xml",
                "text/xml",
                "application/x-www-form-urlencoded"
            ],
            "produces": [
                "application/json",
                "text/json",
                "application/xml",
                "text/xml"
            ],
            "parameters": [
                {
                    "name": "requestBody",
                    "in": "body",
                    "required": true,
                    "schema": {
                        "type": "string"
                    }
                }
            ],
            "responses": {
                "200": {
                    "description": "OK",
                    "schema": {
                        "$ref": "#/definitions/Object"
                    }
                }
            },
            "deprecated": false
        }
    },
    "/api/v1/storefront/register": {
        "post": {
            "tags": [
                "POST"
            ],
            "summary": "",
            "operationId": "Storefront_Register",
            "consumes": [
                "application/json",
                "text/json",
                "application/xml",
                "text/xml",
                "application/x-www-form-urlencoded"
            ],
            "produces": [
                "application/json",
                "text/json",
                "application/xml",
                "text/xml"
            ],
            "parameters": [
                {
                    "name": "requestBody",
                    "in": "body",
                    "description": "",
                    "required": true,
                    "schema": {
                        "type": "string"
                    }
                }
            ],
            "responses": {
                "200": {
                    "description": "OK",
                    "schema": {
                        "$ref": "#/definitions/Object"
                    }
                }
            },
            "deprecated": false
        }
    },
    "/api/v1/storefront/removeapplication": {
        "post": {
            "tags": [
                "POST"
            ],
            "summary": "",
            "operationId": "Storefront_RemoveApplication",
            "consumes": [
                "application/json",
                "text/json",
                "application/xml",
                "text/xml",
                "application/x-www-form-urlencoded"
            ],
            "produces": [
                "application/json",
                "text/json",
                "application/xml",
                "text/xml"
            ],
            "parameters": [
                {
                    "name": "requestBody",
                    "in": "body",
                    "description": "",
                    "required": true,
                    "schema": {
                        "type": "string"
                    }
                }
            ],
            "responses": {
                "200": {
                    "description": "OK",
                    "schema": {
                        "$ref": "#/definitions/Object"
                    }
                }
            },
            "deprecated": false
        }
    },
    "/api/v1/storefront/updateserialnumber": {
        "post": {
            "tags": [
                "POST"
            ],
            "operationId": "Storefront_UpdateSerialNumber",
            "consumes": [
                "application/json",
                "text/json",
                "application/xml",
                "text/xml",
                "application/x-www-form-urlencoded"
            ],
            "produces": [
                "application/json",
                "text/json",
                "application/xml",
                "text/xml"
            ],
            "parameters": [
                {
                    "name": "requestBody",
                    "in": "body",
                    "required": true,
                    "schema": {
                        "type": "string"
                    }
                }
            ],
            "responses": {
                "200": {
                    "description": "OK",
                    "schema": {
                        "$ref": "#/definitions/Object"
                    }
                }
            },
            "deprecated": false
        }
    }
},
"definitions": {
    "Object": {
        "type": "object",
        "properties": {}
    }
}

}

当然,这限制了在逻辑应用程序中使用 API 应用程序的能力,以及右键单击/将 Azure API 应用程序客户端添加到我的项目的能力。(是的,我可以在本地获取 Swagger 文件,然后在项目中修改和使用它,但这不是我们要寻找的流程)。

是否有人对导致 API 应用程序无法生成有效 Swagger(或正确执行 Swashbuckle 代码)的原因有任何想法?

4

5 回答 5

6

尝试转到新的 Azure 门户(预览门户),浏览到您的 API App 并将App Service Plan/Pricing Tier设置为Standard

当我第一次使用默认应用服务计划在 Azure 中部署我的 API 应用程序时,我也遇到了问题,当它是免费计划时,似乎没有为 API 应用程序创建实例。

在我将计划更改为标准后,我的 API 应用程序就可以正常工作。希望这可以帮助!

我在 Azure 中使用 Swagger 的 API 应用程序

有用的参考资料:

创建 API 应用教程

部署 API 应用教程

编辑:答案在下面的评论中找到。在我更新我的 Swashbuckle NuGet 包后,Swagger 正确显示在 Azure 门户中。

于 2015-05-01T14:53:56.057 回答
3

最近碰到这个,发现 Startup.cs 的 Config 方法中的 app.UseSwaggerUI 被包裹在 If Debug Compiler 指令中。不确定它是开发人员还是自动化模板的一部分,但认为值得一提。

于 2017-07-03T08:08:14.520 回答
0

我在部署版本不起作用时使用的过程是。

  1. 设置公共访问权限 - 删除网关引入的问题。
  2. 检查已知端点 api - https:\|xxxxx\yourapi
  3. 在 web.config 中打开远程错误
  4. 解决构建中未包含的任何缺失引用(将复制到输出目录设置为 true)
  5. 重新部署
  6. 访问 Swagger 端点。
  7. 通过网关重新启用安全性。

这允许您在新的 Api 应用程序中添加额外的层之前删除多个故障点并查看最简单的功能是否有效。

于 2015-05-06T20:33:50.200 回答
0

我有同样的问题,通过升级服务计划和更新 nuget 包解决了。

于 2016-02-05T17:10:41.900 回答
0

您只需更新 Swashbuckle 版本,一切正常

  • 安装包 Swashbuckle - 版本 5.2.2 不工作
  • Install-Package Swashbuckle -Version 5.2.1 运行良好
于 2015-12-31T08:39:57.263 回答