Kann keine Verbindung zu sql server von docker unterstützt asp.net core-Projekt
Habe ich eine ASP.NET Core 2.2 Projekt, für das ich auf docker-Unterstützung. Das Projekt läuft gut, solange es keine Datenbank-Verbindung. Für e.g Anmeldung. Wenn ich die Anmeldeinformationen eingeben, erhalte ich die Fehlermeldung wie unten.
Eine nicht behandelte Ausnahme ist aufgetreten während der Verarbeitung der Anfrage.
Win32Exception: Ein Verbindungsversuch ist fehlgeschlagen, da der verbundene
Partei hat sich nicht richtig reagieren nach einen Zeitraum von Zeit, oder die hergestellte
Verbindung war fehlerhaft, da der verbundene host nicht reagiertUnbekannten Ort SqlException: Ein Netzwerk-oder instanzspezifischen
Fehler beim herstellen einer Verbindung zu SQL Server. Die
server wurde nicht gefunden oder ist nicht zugänglich. Stellen Sie sicher, dass die Instanz
name richtig ist und dass SQL Server so konfiguriert ist, dass remote
- verbindungen. (provider: TCP-Provider, error: 0 - Ein Verbindungsversuch ist
fehlgeschlagen, da die Gegenstelle nicht ordnungsgemäß reagiert nach einer
Zeit, oder die hergestellte Verbindung war fehlerhaft, da der verbundene
host hat nicht reagiert.)System.Daten.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity
Identität, SqlConnectionString connectionOptions -, Objekt providerInfo,
bool redirectedUserInstance, SqlConnectionString
userConnectionOptions, SessionData reconnectSessionData, bool
applyTransientFaultHandling) InvalidOperationException: Eine Ausnahme
ausgelöst wurde das vermutlich durch einen vorübergehenden Fehler. Wenn Sie
eine Verbindung mit einer SQL Azure-Datenbank erwägen,
SqlAzureExecutionStrategy.Microsoft.EntityFrameworkCore.Storage.Intern.SqlServerExecutionStrategy+d__7.MoveNext()
Vorher war der Fehler anders aus, wenn TCP/IP nicht aktiviert war in meiner sql server-Konfigurations-manager.(Kann mich nicht erinnern Fehler)
Ich folgte die Schritte, die im link aufgeführt https://jack-vanlightly.com/blog/2017/9/24/how-to-connect-to-your-local-sql-server-from-inside-docker zu lösen, dass Problem.
Habe ich aktiviert TCP/IP und named pipes als gut. Auch ich kann eine Verbindung mit IP vom SQL Management Studio.
Aktuelle Verbindungszeichenfolge:
"ConnectionStrings": {
"DefaultConnection": "Server=xxx.xx.xx.x,1433;Database=TestDB;User ID=username;Password=pwd;Trusted_Connection=True;MultipleActiveResultSets=true"
},
Bitte lassen Sie mich wissen, wenn ich bin, fehlt einem Schritt. Ich möchte eine Verbindung mit einem lokalen sql aus meiner docker-Projekt
InformationsquelleAutor Chaitanya Gadkari | 2018-01-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
So was hat für mich gearbeitet ist:
Andockfenster.für.gewinnen.localhost ist eine Adresse, die innere dns von docker wird zu lösen, wie localhost (nicht localhost innen Andockfenster aber die hosting-Maschine). Der obige code enthält u mit einer ip-Adresse von localhost annimmt und Sie sind in der Lage, erstellen Sie die Verbindungszeichenfolge wie diese:
Dies funktioniert, wenn Sie mit benannten sql server-Instanz ersetzen SQL2017 mit ur Instanz-name und crediatials mit richtigen Benutzer.
JEDOCH!
Für Migrations-und update-Datenbank localhost funktioniert einwandfrei. Wahrscheinlich seit Ihr nicht behandelt von docker-container.
EDIT:
Zweite Lösung ist ein bisschen sauberer, aber Sie brauchen, um ein Projekt, dass unterstützt docker-Komponieren.
Im Andockfenster-Komponieren.yml-Datei, die in der definition Ihres service unter image-Eigenschaft-definition hinzufügen:
Haben Sie immer noch wissen, welche IP-Adresse (die finden Sie, indem Sie die original-Antwort) haben Sie auf alias hinzufügen, aber sobald Sie es wissen, es ist ein bisschen mehr rein. Auf mehr als 5 verschiedenen Rechnern, die ich arbeitete an diese IP ist korrekt.
Wenn Sie mithilfe der integrierten IoC-container, als ja in der startup.cs. Im Grunde, wo immer Sie sind, die Registrierung Ihrer DB-Objekt.
Wie nutzen Sie diese in der
appsettings.json
?Hat jemand konfrontiert, der
System.Net.Internals.SocketExceptionFactory+ExtendedSocketException (00000005, 6): Device not configured
Fehler mit den oben genannten code?InformationsquelleAutor KrzysztofG06
Dies hat mich einige Zeit, um herauszufinden, gibt es eine Reihe von kleinen Problemen, die falsch sein kann, das es frustrierend. Dies kann sogar noch frustrierender als das .net-core-web-Anwendung, die visual studio-2017 Projekt bekommt automatisch generierte nicht funktioniert direkt aus der box. Mit dieser Erfahrung, wie Sie Ihre erste Exposition gegenüber Docker ist nicht ideal.
Ich anfangs auch hatte die falsche Annahme, dass das docker-image kommen würde, mit SQL-Server innerhalb des Containers, dies ist nicht der Fall, versuchen Zugriff auf den Datenbank-server muss bereits installiert auf dem host-Rechner.
Schritte (getestet für windows docker-image, anstatt linux);
1) Holen Sie sich die IP-Adresse Ihres host-Maschine, indem Sie einen Befehl Eingabeaufforderung und geben Sie IPCONFIG
2) Legen Sie die Datenbank-Verbindungszeichenfolge in Sie appsettings.json-Datei zu dieser Ip-Adresse, gefolgt von der SQL Server-port-Nummer, D. H.;
192.168.X.X,1433
3) Legen Sie die Verbindungszeichenfolge nicht zu verwenden Trusted_Connection (löschen Sie diese aus dem connection string) und codieren Sie in der Benutzer-Id und Passwort;
User Id=sa;Password=SuperSecurePassword;
Wenn ich das nicht tun, auf bestimmte SQL Server-Konfigurationen, die ich bekommen würde, eine ungewöhnliche Fehler (kann nicht ganz vergessen, die Besonderheiten!)
Connection String zeigen in etwa so Aussehen;
"Server=192.168.X.X,1433;Database=MyDatabase;User Id=sa;Password=SuperSecurePassword;MultipleActiveResultSets=true"
4) jetzt auf dem host-Computer müssen Sie öffnen Sie die windows-firewall, und fügen Sie eine neue eingehende Verbindung in der Regel für den TCP-port 1433.
5) Nach all diesem, und es immer noch nicht funktioniert, versuchen Sie einen Neustart; ich kämpfte für eine lange Zeit und musste neu starten, das brachte er in das Leben; ich bin mir nicht sicher, Andockfenster hatte richtig initialisiert, dies ist vor allem Spekulation, obwohl! Ich weiß nicht wirklich, wie zu sagen, ein Neustart ist eine Lösung für Probleme, es ist nicht wirklich eine Antwort, aber in bestimmten Fällen es funktioniert der trick.
Bearbeiten, eine Letzte Sache, auf dem visual studio im administrator-Modus (Rechte Maustaste auf icon, "als administrator ausführen") hilft auch.
Entschuldigt sich für die Auferstehung ein Alter thread, aber das Problem scheint immer noch vorhanden und die verfügbaren Informationen sind etwas lückenhaft, wie dieses Problem zu lösen, in Anbetracht der kleinen Anzahl von Dingen, die getan werden müssen.
InformationsquelleAutor Phill
Ich hatte das gleiche Problem, nach dem gleichen Ansatz wie auf der website, die Sie erwähnt. Es sollte funktionieren wie, dass, wenn Sie die Netze mit der standard-Konfiguration.
Einfach deaktivieren Sie die firewall für Ihr öffentliches Netzwerk.
Mein Problem war einfach, dass windows schien zu klassifizieren, die das Netzwerk erstellt von Docker als öffentliches Netzwerk und so die firewall blockiert es, ebenso wie für dieses:
Kann keine Verbindung zu SQL Server express .net-core-app, die auf docker
Es ist nicht markiert, es als eine Antwort, sondern bearbeitet die Frage.
InformationsquelleAutor Agash Thamo.