如何在 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 容器的主要内容,如果未能解决你的问题,请参考以下文章

如何在 asp.net core 中获取项目的根目录。 Directory.GetCurrentDirectory() 在 Mac 上似乎无法正常工作

如何在 ASP.NET Core 生产服务器上禁用“尝试重新连接到服务器”消息

如何在 ASP.NET Core 生产服务器上禁用“尝试重新连接到服务器”消息

如何在不使用 EF 的情况下连接到 ASP.NET Core Web API 中的数据库?

如何从 asp.net core webapi 获取数据到连接到数据库的 angular 11.0.0。我试图这样做,但它返回空记录

Blazor 无法连接到 ASP.NET Core WebApi (CORS)