我有一个使用 PostgreSQL DB 的 .NET Core 2.2 应用程序。
现在我想将其部署在 Google Cloud App Engine Flex 和 Google Cloud SQL PostgreSQL 上。
I tried 官方方式 https://cloud.google.com/sql/docs/postgres/connect-app-engine?hl=en_US and 找到了这个 https://github.com/GoogleCloudPlatform/dotnet-docs-samples/tree/master/appengine/flexible/CloudSql,我发现你必须使用$ gcloud beta app deploy
代替$ gcloud app deploy
我的 app.yaml 配置文件:
env: flex
runtime: aspnetcore
beta_settings:
cloud_sql_instances: "<SQL-NAME>=tcp:<PORT>"
问题是我收到此错误:
尝试连接到
主机=127.0.0.1;端口=XXX;用户名=XXX;密码=XXX;数据库=XXX;
应用程序启动异常:System.Net.Sockets.SocketException
(111):连接被拒绝
我是否必须在 .NET Core 2.2 中包含特殊库才能支持 Google App Engine?
您不需要在 .NET Core 2.2 中包含任何特殊的库,而不是那些已经包含在 .NET Core 2.2 中的库。快速开始 https://github.com/GoogleCloudPlatform/dotnet-docs-samples/tree/master/appengine/flexible/CloudSql您在上面共享的内容,除非您在代码中使用任何其他库。
我已尝试快速入门并部署了连接到 CloudSQL PostgreSQL 数据库的 .NET GAE 应用程序。
看看你的app.yaml
配置文件我可以看到它有问题。另外,根据您收到的错误消息,我认为您的系统存在问题appsettings.json
文件也是如此。
根据您分享的GitHub快速入门,部署时的配置应该是:
app.yaml
runtime: aspnetcore
env: flex
beta_settings:
cloud_sql_instances: "[PROJECT_ID]:[INSTANCE_REGION]:[INSTANCE_NAME]=tcp:[TCP_PORT_NUMPER]"
- PostgreSQL 的 TCP 端口号:5432
- MySQL 的 TCP 端口号:3306
- 为了找到实例连接名称这是之前的部分tcp,你可以去
Cloud Console > SQL > [YOU_INSTANCE_NAME]
你可以在下面找到整个字符串Instance connection name
应用程序设置.json
{
"CloudSQL" : {
"Database" : "PostgreSQL", // Set to "PostgreSQL" when using a PostgreSQL database.
// [START gae_flex_mysql_settings]
"ConnectionString": "Uid=[USER_ID];Pwd=[PASSWORD];Host=cloudsql;Database=[DATABASE_NAME]"
// [END gae_flex_mysql_settings]
}
}
-
Database应该
PostgreSQL
正如评论中所指定的
-
连接字符串应该填写您自己用于设置数据库的数据
- The Host部分应该是
cloudsql
当你正在部署并且127.0.0.1
当本地运行时。
127.0.0.1
表示数据库正在本地运行并且cloudsql
string 表示应该使用连接字符串名称。根据错误,我假设您使用了127.0.0.1
在本地进行测试,但在部署时忘记将其更改回来。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)