【问题标题】:Net Web API Post 500 Error After Publishing To Azure API Management ServiceNet Web API 发布到 Azure API 管理服务后出现 500 错误
【发布时间】:2021-06-16 16:44:08
【问题描述】:

我正在尝试使用 Microsoft Azure 创建一个远程 SQL Server 数据库和将连接到该数据库的网络 Web API 服务。我已经用微软 Azure 成功创建了一个数据库,并关注了This Tutorial 将一个网络 Web API 导入到 Azure 中的 API 管理服务。我有一个在本地运行时可以运行的帖子,通过 Postman 和 SQL Server 进行了测试,但是在发布后在 Azure 门户中进行测试时,我收到了 500 错误。

我在发布时遇到了一些困难并像这样解决了它:

  • 基于 Stackoverflow 答案Here
  • 向我的 Web API 项目添加了一个 global.json 文件
  • 把这个放进去:{ "sdk": { "version": "3.1.406", "rollForward": "latestPatch" } }
  • 跑---dotnet工具恢复

这是测试发布请求后的跟踪:

   api-inspector (0.257 ms)
       {
       "request": {
           "method": "POST",
           "url": "https://psiteapi.azure-api.net/api/demo/AzureTest",
           "headers": [
               {
                   "name": "sec-ch-ua",
                   "value": "\" Not;A Brand\";v=\"99\",\"Google Chrome\";v=\"91\",\"Chromium\";v=\"91\""
               },
               {
                   "name": "sec-ch-ua-mobile",
                   "value": "?0"
               },
               {
                   "name": "Ocp-Apim-Subscription-Key",
                   "value": "9fc0d4d53a3a41e89ca863de5b2f4668"
               },
               {
                   "name": "Sec-Fetch-Site",
                   "value": "cross-site"
               },
               {
                   "name": "Sec-Fetch-Mode",
                   "value": "cors"
               },
               {
                   "name": "Sec-Fetch-Dest",
                   "value": "empty"
               },
               {
                   "name": "X-Forwarded-For",
                   "value": "172.58.144.45"
               },
               {
                   "name": "Cache-Control",
                   "value": "no-cache, no-store"
               },
               {
                   "name": "Content-Length",
                   "value": "0"
               },
               {
                   "name": "Content-Type",
                   "value": "text/plain;charset=UTF-8"
               },
               {
                   "name": "Accept",
                   "value": "*/*"
               },
               {
                   "name": "Accept-Encoding",
                   "value": "gzip,deflate,br"
               },
               {
                   "name": "Accept-Language",
                   "value": "en-US,en;q=0.9"
               },
               {
                   "name": "Host",
                   "value": "psiteapi.azure-api.net"
               },
               {
                   "name": "Referer",
                   "value": "https://apimanagement.hosting.portal.azure.net/"
               }
           ]
       }
   }
   api-inspector (0.003 ms)
       {
       "configuration": {
           "api": {
               "from": "/",
               "to": {
                   "scheme": "https",
                   "host": "psiteapi.azurewebsites.net",
                   "port": 443,
                   "path": "/",
                   "queryString": "",
                   "query": {},
                   "isDefaultPort": true
               },
               "version": null,
               "revision": "1"
           },
           "operation": {
               "method": "POST",
               "uriTemplate": "/api/demo/{str}"
           },
           "user": "-",
           "product": "-"
       }
   }
   cors (0.017 ms)
       "Origin header was missing or empty and the request was classified as not cross-domain. CORS policy was not applied."


    forward-request (0.095 ms)
        {
        "message": "Request is being forwarded to the backend service. Timeout set to 300 seconds",
        "request": {
            "method": "POST",
            "url": "https://psiteapi.azurewebsites.net/api/demo/AzureTest",
            "headers": [
                {
                    "name": "Host",
                    "value": "psiteapi.azurewebsites.net"
                },
                {
                    "name": "Content-Length",
                    "value": 0
                },
                {
                    "name": "sec-ch-ua",
                    "value": "\" Not;A Brand\";v=\"99\",\"Google Chrome\";v=\"91\",\"Chromium\";v=\"91\""
                },
                {
                    "name": "sec-ch-ua-mobile",
                    "value": "?0"
                },
                {
                    "name": "Ocp-Apim-Subscription-Key",
                    "value": "9fc0d4d53a3a41e89ca863de5b2f4668"
                },
                {
                    "name": "Sec-Fetch-Site",
                    "value": "cross-site"
                },
                {
                    "name": "Sec-Fetch-Mode",
                    "value": "cors"
                },
                {
                    "name": "Sec-Fetch-Dest",
                    "value": "empty"
                },
                {
                    "name": "X-Forwarded-For",
                    "value": "172.58.144.45,13.91.254.72"
                },
                {
                    "name": "Cache-Control",
                    "value": "no-cache, no-store"
                },
                {
                    "name": "Content-Type",
                    "value": "text/plain;charset=UTF-8"
                },
                {
                    "name": "Accept",
                    "value": "*/*"
                },
                {
                    "name": "Accept-Encoding",
                    "value": "gzip,deflate,br"
                },
                {
                    "name": "Accept-Language",
                    "value": "en-US,en;q=0.9"
                },
                {
                    "name": "Referer",
                    "value": "https://apimanagement.hosting.portal.azure.net/"
                }
            ]
        }
    }
    forward-request (752.347 ms)
        {
        "response": {
            "status": {
                "code": 500,
                "reason": "Internal Server Error"
            },
            "headers": [
                {
                    "name": "Set-Cookie",
                    "value": "ARRAffinity=1f6f99dc36715fce63518df2e3c0e912c4961391f63790097a7130fac11b8655;Path=/;HttpOnly;Secure;Domain=psiteapi.azurewebsites.net,ARRAffinitySameSite=1f6f99dc36715fce63518df2e3c0e912c4961391f63790097a7130fac11b8655;Path=/;HttpOnly;SameSite=None;Secure;Domain=psiteapi.azurewebsites.net"
                },
                {
                    "name": "Server",
                    "value": "Microsoft-IIS/10.0"
                },
                {
                    "name": "X-Powered-By",
                    "value": "ASP.NET"
                },
                {
                    "name": "Date",
                    "value": "Wed, 16 Jun 2021 15:59:30 GMT"
                },
                {
                    "name": "Content-Length",
                    "value": "0"
                }
            ]
        }
    }


    transfer-response (0.171 ms)
        {
        "message": "Response has been sent to the caller in full"
    }


    Inbound
    (0.277 ms)
    api-inspector (0.257 ms)
        {
        "request": {
            "method": "POST",
            "url": "https://psiteapi.azure-api.net/api/demo/AzureTest",
            "headers": [
                {
                    "name": "sec-ch-ua",
                    "value": "\" Not;A Brand\";v=\"99\",\"Google Chrome\";v=\"91\",\"Chromium\";v=\"91\""
                },
                {
                    "name": "sec-ch-ua-mobile",
                    "value": "?0"
                },
                {
                    "name": "Ocp-Apim-Subscription-Key",
                    "value": "9fc0d4d53a3a41e89ca863de5b2f4668"
                },
                {
                    "name": "Sec-Fetch-Site",
                    "value": "cross-site"
                },
                {
                    "name": "Sec-Fetch-Mode",
                    "value": "cors"
                },
                {
                    "name": "Sec-Fetch-Dest",
                    "value": "empty"
                },
                {
                    "name": "X-Forwarded-For",
                    "value": "172.58.144.45"
                },
                {
                    "name": "Cache-Control",
                    "value": "no-cache, no-store"
                },
                {
                    "name": "Content-Length",
                    "value": "0"
                },
                {
                    "name": "Content-Type",
                    "value": "text/plain;charset=UTF-8"
                },
                {
                    "name": "Accept",
                    "value": "*/*"
                },
                {
                    "name": "Accept-Encoding",
                    "value": "gzip,deflate,br"
                },
                {
                    "name": "Accept-Language",
                    "value": "en-US,en;q=0.9"
                },
                {
                    "name": "Host",
                    "value": "psiteapi.azure-api.net"
                },
                {
                    "name": "Referer",
                    "value": "https://apimanagement.hosting.portal.azure.net/"
                }
            ]
        }
    }
    api-inspector (0.003 ms)
        {
        "configuration": {
            "api": {
                "from": "/",
                "to": {
                    "scheme": "https",
                    "host": "psiteapi.azurewebsites.net",
                    "port": 443,
                    "path": "/",
                    "queryString": "",
                    "query": {},
                    "isDefaultPort": true
                },
                "version": null,
                "revision": "1"
            },
            "operation": {
                "method": "POST",
                "uriTemplate": "/api/demo/{str}"
            },
            "user": "-",
            "product": "-"
        }
    }
    cors (0.017 ms)
        "Origin header was missing or empty and the request was classified as not cross-domain. CORS policy was not applied."
    Backend
    (752.442 ms)↑ Back to top
    forward-request (0.095 ms)
        {
        "message": "Request is being forwarded to the backend service. Timeout set to 300 seconds",
        "request": {
            "method": "POST",
            "url": "https://psiteapi.azurewebsites.net/api/demo/AzureTest",
            "headers": [
                {
                    "name": "Host",
                    "value": "psiteapi.azurewebsites.net"
                },
                {
                    "name": "Content-Length",
                    "value": 0
                },
                {
                    "name": "sec-ch-ua",
                    "value": "\" Not;A Brand\";v=\"99\",\"Google Chrome\";v=\"91\",\"Chromium\";v=\"91\""
                },
                {
                    "name": "sec-ch-ua-mobile",
                    "value": "?0"
                },
                {
                    "name": "Ocp-Apim-Subscription-Key",
                    "value": "9fc0d4d53a3a41e89ca863de5b2f4668"
                },
                {
                    "name": "Sec-Fetch-Site",
                    "value": "cross-site"
                },
                {
                    "name": "Sec-Fetch-Mode",
                    "value": "cors"
                },
                {
                    "name": "Sec-Fetch-Dest",
                    "value": "empty"
                },
                {
                    "name": "X-Forwarded-For",
                    "value": "172.58.144.45,13.91.254.72"
                },
                {
                    "name": "Cache-Control",
                    "value": "no-cache, no-store"
                },
                {
                    "name": "Content-Type",
                    "value": "text/plain;charset=UTF-8"
                },
                {
                    "name": "Accept",
                    "value": "*/*"
                },
                {
                    "name": "Accept-Encoding",
                    "value": "gzip,deflate,br"
                },
                {
                    "name": "Accept-Language",
                    "value": "en-US,en;q=0.9"
                },
                {
                    "name": "Referer",
                    "value": "https://apimanagement.hosting.portal.azure.net/"
                }
            ]
        }
    }
    forward-request (752.347 ms)
        {
        "response": {
            "status": {
                "code": 500,
                "reason": "Internal Server Error"
            },
            "headers": [
                {
                    "name": "Set-Cookie",
                    "value": "ARRAffinity=1f6f99dc36715fce63518df2e3c0e912c4961391f63790097a7130fac11b8655;Path=/;HttpOnly;Secure;Domain=psiteapi.azurewebsites.net,ARRAffinitySameSite=1f6f99dc36715fce63518df2e3c0e912c4961391f63790097a7130fac11b8655;Path=/;HttpOnly;SameSite=None;Secure;Domain=psiteapi.azurewebsites.net"
                },
                {
                    "name": "Server",
                    "value": "Microsoft-IIS/10.0"
                },
                {
                    "name": "X-Powered-By",
                    "value": "ASP.NET"
                },
                {
                    "name": "Date",
                    "value": "Wed, 16 Jun 2021 15:59:30 GMT"
                },
                {
                    "name": "Content-Length",
                    "value": "0"
                }
            ]
        }
    }
    Outbound
    (0.171 ms)↑ Back to top
    transfer-response (0.171 ms)
        {
        "message": "Response has been sent to the caller in full"
    }

这是我在我的网络 Web API 中安装的包:

  • Microsoft.AspNetCore.Mvc.NewtonsoftJson (3.1.0)
  • Swashbuckle.AspNetCore (6.1.4)
  • System.Data.SqlClient (4.8.2)
  • System.Runtime (4.3.1)

鉴于上述问题,如何将我的网络 Web API 导入 Azure API 管理并成功地向 SQL Server 发出请求并在 Azure 中设置?

【问题讨论】:

标签: asp.net-web-api azure-api-management


【解决方案1】:

我从来没有正确设置数据库防火墙,这是解决方案:

Azure 门户 -> SQL 数据库 -> 您的数据库 -> 设置服务器防火墙 -> 允许 Azure 服务和资源访问此服务器 - 是

【讨论】:

    猜你喜欢
    • 2017-08-05
    • 1970-01-01
    • 1970-01-01
    • 2015-10-20
    • 1970-01-01
    • 2020-04-12
    • 1970-01-01
    • 2012-12-01
    • 1970-01-01
    相关资源
    最近更新 更多