首页 > 解决方案 > 如何在 Mac 上将 ASP.Net Core 连接到 SQL Server Docker 容器

问题描述

我正在 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 进行身份验证。确保已在客户端上使用“kinit”初始化 Kerberos,并且已为 SQL Server 注册服务主体名称以允许 Kerberos 身份验证。ErrorCode=InternalError, Exception=Interop+NetSecurityNative+GssApiException: GSSAPI 操作失败并出现错误 - 请求了不受支持的机制(未知的机械代码 0 表示机械未知)。

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

有没有人尝试过这个?

问候!

标签: dockerasp.net-core.net-coreasp.net-core-mvc.net-mac

解决方案


我知道@MikePR 的评论可以作为答案,但我想为我遇到的问题提供更完整的答案。在将dotnet ef database连接字符串与Trusted_Connection=false. 在这篇文章的帮助下,我能够使用这个连接字符串:

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

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


推荐阅读