2016-04-24 20 views
2

Ich habe ein Azure-Testkonto mit einer SQL-Datenbank und einer asp.net 5 Web App. Die Firewall des Db-Servers hat eine Regel für die IP-Adresse meines lokalen Computers und das Kontrollkästchen "Zugriff auf Azure-Dienst zulassen" aktiviert. Ich kann von meinem lokalen Sql Server Manager mit der azurblauen Datenbank ohne Zwischenfall verbinden.Azure Web App kann nicht Azure DB

Die Webanwendung hat diese Verbindungszeichenfolge im Abschnitt 'Anwendungseinstellungen/Verbindungszeichenfolgen' eingerichtet. I'have geprüft der wep App diese Verbindungszeichenfolge verwendet:

"Server=tcp:[MyServerName].database.windows.net,1433;Database=[MyDbName];User ID=[MyUserName]@[MyServerName];Password=[MyPassword];Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"

Die gleiche Verbindungszeichenfolge in einem Desktop-Client verwendet wird und funktioniert einwandfrei. Die Web-App kann jedoch keine Verbindung zum Server herstellen und löst diese Ausnahme aus, was ziemlich klar ist, aber ich weiß nicht, wie ich sie lösen soll.

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: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)

Ich weiß sehr ähnliche Fragen gestellt wurden und beantwortet hier, aber keiner von ihnen sind genau das gleiche Problem, das ich bin vor, weder haben eine Lösung für mich.

Vielen Dank für Ihre Zeit.

UPDATE 1

Als Test habe ich die Website auf meinem lokalen IIS ausführen konfiguriert, gegen das Blau des DB, und es funktioniert auch. So können Desktop-Anwendungen, SQL-Server-Manager und IIS von meinem lokalen Computer auf diese Datenbank zugreifen. Natürlich ist meine IP-Adresse in der Server-Firewall auf der weißen Liste, aber azurblaue App-Dienste sind ebenfalls auf der weißen Liste und haben keinen Zugriff.

enter image description here

UPDATE 2

Joe Raio Kommentar hat mich die Region Konfiguration doppeltzukontrollieren, und hier ist ein Screenshot der aktuellen Einstellungen. Ich glaube, alles ist richtig.

enter image description here

+0

Haben Sie versucht, Ihre Webserver-Adresse an den Firewall-Einstellungen des DB hinzufügen? Ich werde versuchen, Ihr Szenario zu reproduzieren, wenn ich etwas Zeit habe, um zu sehen, ob ich weitere Fehler beheben kann. –

+1

Die Website wird in Azure App Services gehostet, sodass ich nicht weiß, wie ich die IP herausfinden soll.In den Firewall-Einstellungen für den SQL-Server gibt es jedoch eine Regelaktivierung "Zugriff auf Azure-Dienst zulassen", die alle Anwendungen in azure auf die weiße Liste setzen soll. –

+0

Sie können auf die Registerkarte "Eigenschaften" der Web-App klicken, um die IP-Adresse anzuzeigen. Aus dem, was Sie beschreiben, sollten Sie die IP-Adresse der Web-App nicht hinzufügen müssen. Es sollte funktionieren. Werden sowohl die Web-App als auch die SQL-Datenbank in derselben Azure Geo Region gehostet? –

Antwort

1

The web app has this connection string set up in its 'Application Settings/Connection strings' section. I'have checked the wep app IS using this connection string:

Das ist nicht, wo Sie Ihre Verbindungszeichenfolge für Ihre ASP.net Anwendung eingestellt.

Öffnen Sie die Datei appsettings.json sollte der erste Abschnitt enthält die folgenden Daten

"Data": { 
    "DefaultConnection": { 
     "ConnectionString": "Server=(localdb)\\mssqllocaldb;Database=aspnet5-WestEuroSODBAccess-96be0407-8bee-4c89-97e5-f6711136f106;Trusted_Connection=True;MultipleActiveResultSets=true" 
    } 

Platzieren Sie Ihre Verbindungszeichenfolge in dort. Ähnlich dazu

"Data": { 
    "DefaultConnection": { 
     "ConnectionString": "Server=tcp:[MyServerName].database.windows.net,1433;Database=[MyDbName];User ID=[MyUserName]@[MyServerName];Password=[MyPassword];Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;" 
    } 

Das wird das Problem beheben. Ich habe ursprünglich nicht gemerkt, dass Sie dies als ASP.net 5-Anwendung eingerichtet haben.

Weitere Informationen finden Sie hier: http://docs.asp.net/en/latest/fundamentals/configuration.html

+0

Danke für Ihre Bemühungen, aber das habe ich schon getan. Und es funktioniert perfekt lokal. ABER wenn ich die Webseite veröffentliche, funktioniert es nicht. Da Sicherheit jetzt nicht mein Problem ist, drucke ich sogar auf der Website die Verbindungszeichenfolge, die verwendet wird, und es ist die richtige (es funktioniert in lokalen IIS, SSMS, Desktop-App), aber ich erhalte Fehler 40, wenn ich veröffentliche. Kann es mit dem Entity Framework zusammenhängen? –

+0

Ich habe gerade einen Test gemacht, indem ich eine neue Ressourcengruppe, db server, db und web app (alles in West Euro) eingerichtet habe. Ich habe dann eine ASP.net 5-Anwendung erstellt, die Verbindungszeichenfolge in appsettings.json aktualisiert und veröffentlicht. Es funktionierte perfekt und Sie können es hier sehen: http://jmrwesteuroweb.azurewebsites.net/. Es muss noch etwas anderes geben, das das Problem verursacht. Können Sie mir entweder die URL oder die Projektdateien mailen und ich würde mich freuen, sie für Sie zu sehen? [email protected] –

+0

Etwas, das in den Sinn kommt, ist, dass der Fehler angibt, es gibt ein "Named Pipes" -Problem, aber die Verbindungen tring hat "TCP" darauf. Ich verstehe, dass es zwei verschiedene Protokolle gibt, also ist das vielleicht nützlich. –