使用代理从 CORE 连接到 Google Cloud SQL 实例:发生了与网络相关或特定于实例的错误。我可以通过 mysql cmd 连接

Conn to Google Cloud SQL instance from CORE w/ proxy: A network-related or instance-specific error occurred. I CAN connect via mysql cmd

我首先通过 运行 以下命令启动 goole sql 代理:

./cloud_sql_proxy -instances=dauntless-gate-xxxxxx:us-central1:redacted-dev=tcp:3306

SUCCESSFULLY 通过 运行 以下命令连接到它:

mysql --host=127.0.0.1 --user=sa --password=<redacted>

mysql --host=127.0.0.1 --user=sa --password=<redacted>

我尝试使用 ASP.net Core 2 进行连接,但失败了:

startup.cs

public void ConfigureServices(IServiceCollection services)
{
    services.AddDbContext<UserContext>(opt => 
        opt.UseSqlServer("Server=127.0.0.1:3306; User Id=sa;Password=<redacted>;"));
...
}

错误:

SqlException:建立与 SQL 服务器的连接时发生了与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确并且 SQL 服务器配置为允许远程连接。 (提供者:TCP 提供者,错误:35 - 捕获到内部异常)

我也尝试了以下并得到了稍微不同的错误:

startup.cs

public void ConfigureServices(IServiceCollection services)
{
    services.AddDbContext<UserContext>(opt => 
        opt.UseSqlServer("Server=127.0.0.1; User Id=sa;Password=<redacted>;"));
...
}

处理请求时出现未处理的异常。 SqlException:建立与 SQL 服务器的连接时发生了与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确并且 SQL 服务器配置为允许远程连接。 (提供商:TCP 提供商,错误:40 - 无法打开与 SQL 服务器的连接)

处理请求时出现未处理的异常。 ExtendedSocketException: 没有这样的设备或地址 System.Net.Dns.InternalGetHostByName(字符串主机名)

"SQL Server" 是 Microsoft 的 SQL 服务器产品的名称,与 MySQL 不同,运行 在您的实例上。您将需要使用 MySQL Connector/NET to connect. Check out this page 以获得更具体的 Entity Framework 指导。