首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Google运行到的EF核心连接

问从Google运行到的EF核心连接
EN

Stack Overflow用户
提问于 2021-08-03 04:24:34
回答 1查看 324关注 0票数 1

我试过这样的方法:

代码语言:javascript
复制
Data Source=/cloudsql/*****:asia-southeast2:*****;Initial Catalog=*****;Integrated Security=False;User ID=sqlserver;Password=MyPassword0!;MultipleActiveResultSets=True

/cloudsql/*****:asia-southeast2:*****是我在这里中描述的实例连接名称。

我也尝试过这样的公共IP:

代码语言:javascript
复制
Data Source=***.***.***.***;Initial Catalog=*****;Integrated Security=False;User ID=sqlserver;Password=MyPassword0!;MultipleActiveResultSets=True

使用IP地址我的SQL实例公共IP,但它不起作用。

我已经启用了云运行中的sql实例连接:

​

​

如何使用EF Core修复连接字符串?

这就是我遇到的错误:

Microsoft.Data.SqlClient.SqlException (0x80131904):在建立到Server的连接时发生了与网络相关的或特定于实例的错误。找不到或无法访问服务器。验证实例名是否正确,以及Server是否配置为允许远程连接。(提供程序: SQL网络接口,错误: 25 -连接字符串无效)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-03 07:40:48

您正在尝试在云运行时使用。但是,如果您查看文献资料,则不支持这种连接。

实际上,连接是受支持的,但是云运行服务打开一个Unix套接字来连接Server实例。而且没有符合Unix套接字的Server客户端,因此您无法访问它。

为了解决您的问题,我建议您使用本页的Private IP部分。您也可以使用公共IP实现相同的配置(不要使用无服务器的VPC连接器,转到Cloud实例,并授权网络0.0.0.0/0访问您的实例),但是,由于您需要广泛地打开授权的网络,出于安全考虑,我不建议您使用此选项。

编辑1

因为我的英语不好,让我解释一下!

最好的方法是遵循文档页面:将Cloud私有IP连接到您的VPC,使用一个无服务器的VPC连接器和云运行,在代码中您可以使用连接字符串中的私有IP来访问数据库。

但是,您也可以使用公共IP,这是我不推荐的(见下面的原因),至少在它的第一次简单使用中是这样的。实际上,您可以在代码中使用公共IP而不是私有IP。因为您使用的是公共IP,所以您不再需要云运行服务上的无服务器VPC连接器(您不使用VPC,而是使用internet来访问internet)。

然而,由于您使用互联网和云运行是一个多客户共享服务,您不知道您的源IP。在Cloud上,您需要允许授权网络部分中的任何IP (0.0.0.0/0)访问数据库,这不是一个非常安全的配置。

或者,您可以在云运行上创建一个更复杂的配置,以安全地使用Cloud (但它变得非常复杂)。让我来研究一下。

我之前说过,Cloud是一个共享服务,在启动传出调用(比如数据库连接)时,您不管理源IP。这是真的,但是你能控制住的!

  • 首先,您需要(再次)在云运行中使用一个无服务器的VPC连接器。并且您需要将出口设置为ALL (将公共和私有流量路由到无服务器的VPC连接器)。
  • 然后,在VPC中创建一个Cloud,并在上网时至少选择您的无服务器VPC连接器子网为NATed。
  • 在云NAT配置上预留一个公共IP

现在,您已经在云运行服务上定义了一个公共的静态IP。您只能在Cloud授权网络上授予它,以提高安全性,并且不允许任何人访问您的Cloud实例。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68630358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档