如何在 Mac 上将 ASP.Net Core 连接到 SQL Server Docker 容器

Posted

技术标签:

【中文标题】如何在 Mac 上将 ASP.Net Core 连接到 SQL Server Docker 容器【英文标题】:How to connect ASP.Net Core to a SQL Server Docker container on Mac 【发布时间】:2018-10-27 16:53:38 【问题描述】:

我正在 Mac 上使用 Visual Studio 2017 开发 ASP.Net 核心 MVC 应用程序。但是,我在连接到在 Docker 容器上运行的 SQL Server 实例时遇到了一些问题。

这是我正在使用的连接字符串:

"ConnectionStrings": 
    "myCustomConnString": "Server=localhost;Database=myDataBase;User Id=sa;Password=myPassw0rd;Trusted_Connection=True;MultipleActiveResultSets=true"
  

这是我得到的错误:

无法使用 Kerberos 进行身份验证。确保 Kerberos 使用“kinit”和服务主体名称在客户端上初始化 已为 SQL Server 注册以允许 Kerberos 验证。错误代码=内部错误, 异常=Interop+NetSecurityNative+GssApiException:GSSAPI 操作 错误失败 - 请求了不受支持的机制(未知 mech-code 0 表示机械未知)。

使用 SQL Operation Studio、Azure Data Studio 和/或 Visual Studio Code 并传递相同的参数,我可以连接到 SQL Server 的 docker 实例。但不是在运行 ASP.Net 核心应用程序时。所以,我不确定我是否缺少连接字符串的任何附加参数。

有人试过这个吗?

问候!

【问题讨论】:

找到了如何连接到 SQL Server 的 Docker 实例。我必须设置 Trusted_Connection=false。之后,我可以在运行 ASP.Net 核心应用程序时进行连接。 谢谢!我在这个上浪费了很多时间,然后就修好了! 【参考方案1】:

我知道@MikePR 的评论可以作为答案,但我想为我遇到的问题提供更完整的答案。在将连接字符串与Trusted_Connection=false 一起使用后,我无法让dotnet ef database 命令执行evan。在this article 的帮助下,我能够使用这个连接字符串:

"ConnectionStrings": 
    "myCustomConnString": "Server=localhost,1433\\Catalog=myDatabase;Database=myDatabase;User=username;Password=MYSecurePWD;"
  

现在,我的迁移针对 docker 容器中的 SQL Server 运行。请注意,本文不包括使用Trusted_Connection=false。我假设 false 是默认值。

【讨论】:

【参考方案2】:

我遇到了同样的问题,只需删除即可 Trusted_Connection=True; 从连接字符串

【讨论】:

【参考方案3】:

我按如下方式运行了连接字符串,它成功了

"ConnectionStrings": 
    "DevConnection": "Server=localhost,1433;Database=TarjetaCreditoDB;User Id=sa;Password=myPassw0rd;MultipleActiveResultSets=True;"
  

【讨论】:

【参考方案4】:

我能够通过删除 Trusted_Connection 解决我的问题

【讨论】:

【参考方案5】:

通过设置Trusted_Connection=False

解决了我的问题

【讨论】:

以上是关于如何在 Mac 上将 ASP.Net Core 连接到 SQL Server Docker 容器的主要内容,如果未能解决你的问题,请参考以下文章