能连接到dockerized sql express的.net核心api中的连接字符串应该是什么?

时间:2019-04-04 09:47:58

标签: sql-server docker asp.net-core

我可以下载并运行microsoft/mssql-server-windows-express 所以这是可行的:

docker run -d -p 1433:1433 -e sa_password=MyPassword1 -e ACCEPT_EULA=Y microsoft/mssql-server-windows-express

我可以通过 powershell Sql服务器管理工​​作室(本地主机,1433以及SA和MyPass1)将其连接 这样我就可以看到数据库并使用它们。

但是,在.NET Core API应用程序中,我无法连接到dockerized mssql服务器Express(Windows dockerized而非Linux)

  "ConnectionStrings": {
    "Default": "Server=127.0.0.1,1433;Database=master;User=sa;Password=MyPassword1 ;"
  },

不幸的是,我总是得到这个SQL异常:

  

System.Data.SqlClient.SqlException:与网络相关或   建立与以下对象的连接时发生特定于实例的错误   SQL Server。服务器未找到或无法访问。校验   实例名称正确并且已将SQL Server配置为   允许远程连接。 (提供商:TCP提供程序,错误:0-否   由于目标计算机主动拒绝,因此可以建立连接   它)。

所以mssql-server-windows-express容器正在运行,我可以通过powershell命令和sql server management studio来访问它,但是当我在visual studio 2017中运行.net core api应用程序时,我得到了这个sql总是例外。

1 个答案:

答案 0 :(得分:0)

就您的计算机而言,

Localhost与正在运行的Docker实例不同。通过使用127.0.0.1,您可以告诉它连接到自身而不是本地计算机。您需要将其更改为本地计算机的实际 IP。