Azure Cloud Service kann keine Verbindung zu SQL-database nur auf Schreiboperationen herstellen

Ich habe eine Web-Anwendung in Lightswitch entwickelt. Es gibt einen HTML-Lightswitch-Client, der eine Verbindung zu einem server herstellt (C #) und dieser server bekommt die data aus einer SQL-database.

Die Anwendung funktioniert ordnungsgemäß in meiner lokalen Maschine, das Problem kommt, wenn ich die Lösung zu einem Cloud Service in Azure veröffentlichen. Dann verbindet sich der server korrekt mit der database und kann alle Informationen von ihm lesen, aber wenn ich versuche, die database aus meiner Anwendung zu aktualisieren (Zeilen einzufügen oder zu aktualisieren), friert die Anwendung ein und es gibt folgende Fehlermeldung:

Kann keine Verbindung zur SQL server-database herstellen. Innere exceptionmeldung: Kann keine Verbindung zur SQL server-database herstellen. Innere exceptionmeldung: Beim Herstellen einer Verbindung zu SQL server ist ein netzwerkbezogener oder instanzspezifischer Fehler aufgetreten. Der server wurde nicht gefunden oder war nicht zugänglich. Überprüfen Sie, ob der Instanzname korrekt ist und dass SQL server für Remoteverbindungen konfiguriert ist. (Anbieter: SQL Network Interfaces, Fehler: 26 – Fehler Lokalisierung server / Instanz angegeben)

Ich habe die Verbindungsparameter überprüft und alle sind korrekt, das ist die Verbindungszeichenfolge in meinem web.config:

<add name="My_Data" connectionString="data source=tcp:{Myserver}.database.windows.net,1433;initial catalog={myDatabase};user id={Myuser}@{Myserver};password={MyPassword};Trusted_Connection=False;Encrypt=True;Connection Timeout=30;" providerName="System.Data.SqlClient" /> 

Ich habe andere Fragen mit dem gleichen Problem gesehen, aber alle von ihnen waren, weil die database oder der server nicht verfügbar war. Ich habe keine Probleme mit dem server zu verbinden, weil ich meine database ohne Probleme abfragen kann.

Der Fehler kommt, wenn ich versuche, in meiner database zu schreiben, entweder weil ich auf die Schaltfläche "memoryn" eines Lightswitch-imageschirms klicke oder weil ich es per Code im server mache:

 serverContext.DataWorkspace.My_Data.SaveChanges(); 

Wenn ich die vorherige Zeile kommentiere, wird der Fehler nicht aufgefordert.

Ich habe auch die Benutzerberechtigungen in der database überprüft und dieser Benutzer ist ein db_owner, also sollte es kein Problem damit geben.

Jedermann hat jemals ein Problem wie dieses konfrontiert?

Ich habe die Lösung gefunden!

Nach einer tiefen Forschung entdeckte ich, dass Azure server eine Verbindungszeichenfolge zu meiner Anwendung hinzufügt (ich weiß nicht, wie und warum). Diese Verbindungszeichenfolge wird von irgendwo vererbt und zeigt auf eine lokale Instanz von SQL Express. Offensichtlich existiert diese Instanz nicht, so dass nach einem Timeout die Anwendung den oben gezeigten Fehler austriggers.

Ich weiß nicht wirklich, warum dies geschieht, noch warum passiert nur, wenn ich versuche, in meiner database zu schreiben. Die Lösung, die ich gefunden habe, ist, die folgenden in der Verbindung Strings Teil meiner web.config hinzufügen:

 <clear /> 

Damit löschen wir die geerbte Verbindungszeichenfolge. Und jetzt müssen wir die Verbindungszeichenfolge des LocalSqlservers setzen (was unsere Verbindungszeichenfolge sein wird, die auf unsere Remote SQL server in Azure zeigt):

 <add name="LocalSqlserver" connectionString="Data Source={SERVER}.database.windows.net;Initial Catalog={DATABASE};Integrated Security=False;User ID={USER}@{SERVER};Password={PASSWORD};Encrypt=True" /> 

Jetzt geht alles gut Ich hoffe, das kann jedem helfen, der das gleiche Problem als ich und ich würde wirklich gerne wissen, warum dies passiert ist, also wenn jemand es weiß, bitte sagen Sie mir 🙂