Wir haben einen Webserver in einem Linux-Docker-Container ausgeführt. Wenn ich es auf einem Windows 10-Host ausgeführt ich Fehler erhalten folgenden auf den lokalen SQL Server auf Verbindungs:Verbindungszeichenfolge vom Andock-Container zum SQL Server dblocal in Host
Microsoft.EntityFrameworkCore.Query.Internal.SqlServerQueryCompilationContextFactory[1]
An exception occurred in the database while iterating the results of a query.
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: 25 - Connection string is not valid) ---> System.Net.Internals.SocketExceptionFactory+ExtendedSocketException: No such device or address...
Die Verbindungszeichenfolge in der json wie folgt aussieht:
"ConnectionString": "Server=(localdb)\\mssqllocaldb;Database=MyAppDb;User ID=test;Password=test;",
Wenn ich den Webserver debuggen In Visual Studio mit der gleichen Verbindungszeichenfolge funktioniert es. Also ich verstehe nicht, warum Docker den Connection string is not valid
Fehler wirft.
Der Webserver verwendet .NET Core 1.1, daher sollte in Bezug auf this die Verbindung zu einer benannten Instanz von SQL Server funktionieren. Ich habe zwei SQL Server-Instanzen installiert. Die Verbindung mit Named Pipes funktioniert nicht, da das Linux-Andockfenster dies nicht unterstützt.
Ich benutze den Netzwerk-Modus Host für den Behälter, so sollte es die gleiche Netzwerkumgebung wie die Host-Computer hat:
docker run --rm -it --name MyApp -v c:\users\myself\MyApp.json:/app/appsettings.json --network="host" MyAppImage
Hat jemand eine Idee?
Ist ['LocalDb'] (https://msdn.microsoft.com/en-us/library/hh510202.aspx) auf dem Webserver installiert? – DavidG
Der Container befindet sich auf einer anderen IP-Adresse, nicht auf dem lokalen Host. Wenn Sie den Datenbankserver auf dem lokalen Rechner ausführen, müssen Sie das TCP/IP-Netzwerk für den Datenbankserver aktivieren und die Konfiguration für die Verwendung des HOSTNAME aktualisieren oder IP der Host-Umgebung ... sollte dies idealerweise über eine Umgebungsvariable erfolgen. – Tracker1
@DavidG: Der LocalDb wird auf dem Windows 10-Hostcomputer ausgeführt. – gumo