我有SQL Server 2016 Express,用於Windows的docker和安裝在Windows 10機器上的IIS。無法連接到運行在docker上的.net核心應用程序的SQL Server Express。
SQL Server Express配置爲偵聽1455端口。 Northwind示例數據庫就在那裏。
Windows防火牆已禁用。
Ipconfig
顯示以下內容:從Visual Studio在Windows上運行時
using System;
using System.Data.SqlClient;
using System.Net.Http;
namespace ConnectSqlServer
{
class Program
{
static void TestHttp()
{
using (var client = new HttpClient())
{
var response = client.GetAsync("http://10.0.75.1").Result;
var content = response.Content.ReadAsStringAsync().Result;
Console.WriteLine(content);
}
}
static void Main(string[] args)
{
TestHttp();
var cn = new SqlConnection("Data Source=10.0.75.1\\SQLEXPRESS,1455;Initial Catalog=Northwind;User ID=docker;Password=SomeStrongPassword;");
cn.Open();
}
}
}
該應用程序成功運行:
Ethernet adapter vEthernet (DockerNAT) 2:
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::70f1:3323:a7a8:b7a5%21
IPv4 Address. . . . . . . . . . . : 10.0.75.1
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . :
我在Visual Studio 2017年創造了一個非常簡單的.NET核心2控制檯應用程序。但是,當我加入泊塢窗支持並運行它時,TestHttp方法效果好,但我無法連接到SQL Server時,我得到以下異常:
System.Data.SqlClient.SqlException
A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: TCP Provider, error: 40 - Could not open a connection to SQL Server)
這是我Dockerfile
:
FROM microsoft/dotnet:2.0-runtime
ARG source
WORKDIR /app
COPY ${source:-obj/Docker/publish} .
ENTRYPOINT ["dotnet", "ConnectSqlServer.dll"]
而且這是我的docker-compose.yml
:
version: '3'
services:
connectsqlserver:
image: connectsqlserver
build:
context: ./ConnectSqlServer
dockerfile: Dockerfile
我應該怎麼做連接到從.NET核心上的碼頭工人續運行2.0的應用程序在Windows主機上運行的本地SQL Server Express ainer?
編輯:
答:在禁用Windows防火牆時要小心。
我關閉了Windows防火牆,但只在域網絡上。 Windows將DockerNAT適配器視爲公共網絡。所以Windows防火牆阻止了與SQL Server的連接。
我在公共網絡上關閉了Windows防火牆,現在我可以連接了。
我正在處理同樣的問題。我比你遠一點,但仍然卡住了。看看這篇文章。 https://docs.docker.com/compose/aspnet-mssql-compose/ – JasonlPrice
@JasonlPrice。但是那篇文章是爲了在Docker容器上運行SQL Server for Linux。我在Windows主機上運行SQL Server Express。 –
感謝您使用Windows防火牆的提示!那爲我做了。您可能想要自己添加答案,並將其標記爲正確,如果這樣做對您有用。 –