我的ASP NET CORE服务作为App Engine Flexible在Google Cloud上运行。 PostgreSQL数据库也在SQL Cloud上运行。服务连接到数据库并获取数据。
如果我在本地主机上运行服务并从浏览器或Fidler测试api,则可以正常工作。当服务在云中运行但api响应是模拟的时,它也可以正常工作。但是,如果服务需要连接数据库,则会出现HTTP ERROR500。没有更多有关错误的其他信息。
也许某人知道为什么它像描述中那样工作?
连接字符串看起来像:
“” ConnectionString“:”服务器= 11.11.11.11;端口= 1111;数据库=名称数据库;;用户ID =用户;密码=通过; Keepalive = 1;“,
为了避免将IP列入白名单,这是一项繁琐的工作,有两种方法可以从App Engine Flex进行连接,而您无需这样做。
一种方法是使用beta settings并连接到本地地址。如果仅连接到一个数据库,则这种方法很好为此,您需要将以下行添加到app.yaml
beta_settings:
cloud_sql_instances: <INSTANCE_CONNECTION_NAME>=tcp:<PORT>
另一种方法是通过内部IP连接。为此,您需要将App Engine和CloudSQL放在同一区域。并将以下行添加到您的app.yaml
network:
name: projects/<HOST_PROJECT_ID>/global/networks/<NETWORK_NAME>