【发布时间】:2020-01-02 22:28:03
【问题描述】:
我的 ASP NET CORE 服务作为 App Engine Flexible 在 Google Cloud 上运行。 PostgreSQL 数据库也在 SQL Cloud 上运行。服务连接到数据库并获取数据。
如果我在 localhost 上运行服务并从浏览器或 Fidler 测试 api,它工作正常。当服务在云中运行但 api 响应是模拟的时,它也可以正常工作。但是如果服务需要连接做数据库,它会得到 HTTP ERROR 500。没有更多关于错误的额外信息。
也许有人知道为什么它会像描述中那样工作?
连接字符串如下:
"ConnectionString": "Server=11.11.11.11;Port=1111;Database=namedb;;User Id=user;Password=pass;Keepalive=1;",
【问题讨论】:
-
云sql是如何配置的?请记住,默认情况下,云 sql 拒绝来自任何主机的连接,您可能允许您的 localhost 用于测试/开发目的,对吧?
-
一开始是的,从 pgadmin 连接到 SQL 云。但是为了测试我删除了所有允许的主机。从手机上它的工作原理相同,没有连接到数据库 - 正确,连接到 db http 500。
-
那么,您必须将您的应用引擎应用列入白名单,以便对您的云 sql 实例执行经过身份验证的调用 :) 尝试将应用引擎 IP 范围列入白名单,看看它是否有效,如果这是问题所在我建议您使用证书提高连接安全性
-
我想我尝试过它。我获得了服务工作实例的 IP 并将其添加到白名单中。您的建议是否正确?
-
App Engine 目前不提供将静态 IP 地址映射到应用程序的方法。为了优化最终用户和 App Engine 应用程序之间的网络路径,不同 ISP 或地理位置的最终用户可能会使用不同的 IP 地址来访问同一个 App Engine 应用程序。随着时间的推移或从不同的网络位置,DNS 可能会返回不同的 IP 地址来访问 App Engine。 cloud.google.com/appengine/kb
标签: postgresql http asp.net-core google-cloud-platform cloud