【问题标题】:What is the connection string for SQL Server running on Mac Docker in ASP.NET Core?在 ASP.NET Core 的 Mac Docker 上运行的 SQL Server 的连接字符串是什么?
【发布时间】:2021-07-01 21:23:37
【问题描述】:

我正在尝试在 MAC 上完成 Pluralsight 上的 ASP.NET CORE 教程。我正在使用 Docker 运行 MSSQL 服务器,它似乎可以工作(我已经启动并运行了 sql 数据库 as shown here)

第二步是让我的 asp.net 核心应用程序连接到这个 mssql 数据库。以下是我在 appsettings.json 中的连接字符串:

  "ConnectionStrings": {
    "OdeToFood2Db": "Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=OdeToFood2;Integrated Security=True"
  }

这就是我在 startup.cs 中的 ConfigureServices():

services.AddDbContextPool<OdeToFood2DbContext>(
                options =>
                {
                    options.UseSqlServer(Configuration.GetConnectionString("OdeToFood2Db"));
                }
            );

然后我尝试运行

dotnet ef dbcontext info -s ../OdeToFood2/odeToFood2.csproj

但我得到了

Build started...
Build failed. Use dotnet build to see the errors.

错误。 我认为问题在于我的连接字符串错误,因为我在 docker 上运行我的 mssql,而不是像我正在关注的 tutorial 那样在本地运行。

如果有人能指出我正确的方向,那肯定会帮助很多,我已经在这个问题上卡住了 5 天,这真是令人难以忍受。提前致谢!

【问题讨论】:

    标签: macos visual-studio docker asp.net-core connection-string


    【解决方案1】:

    Docker 在您的机器上运行自己的内部虚拟网络,发现 SQL 容器的 IP/主机名应该会有所帮助,因为从技术上讲,您的 SQL 实例是在容器内运行的。

    在你的 docker 机器上运行

    docker ps
    

    这应该列出所有正在运行的容器,其中之一应该是您的 SQL 容器。输出应该类似于:

        CONTAINER ID   IMAGE          COMMAND                  CREATED      STATUS     PORTS        NAMES
        a8b6facb199c   SQL-Image     "some command"            X days ago   Up X days   8080        sqlserver
    

    感兴趣的是 portsname 字段。您的端口字段应至少列出一个端口,这可能是您使用的 SQL 提供程序的默认值,但可能不是。

    我们现在有了要尝试连接的端口,现在我们需要 IP 地址。运行以下命令,其中是上一个命令中 name 字段中的值(或使用容器 ID)

    docker inspect <image-name>
    

    这将转储您的容器的属性,包括 IP 地址,这可能是 172.x IP 地址。

    现在我们有了端口和 IP 地址,您应该可以修改连接字符串以指向这些值。

    【讨论】:

      【解决方案2】:
        "ConnectionStrings": {
          "MyWindowsConnection": "Server=(localdb)\\mssqllocaldb;Database=TestWinMac;Trusted_Connection=True;",
          "MyMacConnection": "Server=localhost,1433;Initial Catalog=TestWinMac;User ID=SA;Password=MyP@ssword"
        }
      

      查看我的连接,标题为“MyMacConnection”。 1433是端口。 我有一个同时存在于 Mac 和 Windows 机器上的项目,我根据我正在使用的平台切换出连接字符串。

      【讨论】:

        猜你喜欢
        • 2018-10-07
        • 1970-01-01
        • 2021-03-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多