2016-04-27 1 views
1

Ich habe ein .NET MVC-Projekt, das seine Daten aus einer SQL-Datenbank bezieht.Problembehandlung bei der Bereitstellung von IIS-Webpaketen mit SQL-Datenbank

Wenn ich das Projekt im Debug-Modus auf meinem lokalen Computer ausführen, wird es ohne Fehler ausgeführt; Nachdem ich jedoch das Projekt auf meinem IIS-Server (Version 6 glaube ich) mit dem Microsoft Publish Wizard implementiert habe (erstelle eine .zip, verschiebe diese .zip in den wwwRoot-Ordner, auf den die Website gezeigt wird), stoße ich auf: Website-Hauptseite über URL-Adresse, aber wenn ich die Login-ID eingeben, erzeugt es eine integrierte Fehlermeldung "Ungültige Benutzer-ID".

Der einzige Zeitpunkt, an dem dieser Fehler auftritt, wenn eine gültige ID eingegeben wird, ist, wenn die Datenbank nicht zum Überprüfen der Anmeldeinformationen erreicht werden kann. Also, mit SQL Profiler, ich habe versucht zu sehen, ob eine Abfrage an die Datenbank gemacht wurde - es scheint, dass die Antwort "Nein" ist.

Ich habe überprüft, dass die Verbindungszeichenfolgen ordnungsgemäß in der IIS-Umgebung konfiguriert sind, und kann sicher davon ausgehen, dass keine codebezogenen Fehler in Bezug auf dieses Problem vorliegen.

Die Frage: Welche weiteren Problembehandlungsmethoden zur Verfügung stehen für IIS und SQL-Interaktionen zu sehen, was die Wurzel dieses Fehlers ist, oder welche Vorschläge könnten Sie das Problem

+1

Anwendungsereignisse auf dem IIS-Server. Ist die Firewall eingeschaltet? Sind sie auf derselben Domain? Kann der IIS-Server tatsächlich den SQL-Server sehen? Außerdem müssen Sie möglicherweise fehlgeschlagene/erfolgreiche Anmeldeversuche protokollieren. Standardmäßig protokolliert SQL Server diese fehlgeschlagenen Versuche nicht. – WickedFan

+0

Die Ereignisprotokolle auf dem IIS-Server (der derselbe Computer ist, der den SQL-Server hostet) gibt den Fehler "Anmeldung fehlgeschlagen für Benutzer 'IIS APPPOOL \ OPOC'. Grund: Fehler beim Öffnen der explizit angegebenen Datenbank". Ich bin mir sicher, dass diese sich in der gleichen Domäne befinden, da dieser IIS-Server seit einiger Zeit die Testumgebung für dieses Projekt ausführt. Ob es den SQL-Server sehen kann oder nicht, ich bin mir nicht sicher, wie ich das bestätigen soll, aber ich hatte es so angenommen, da es funktionierte, bevor ich die Anwendung nach einigen Änderungen an einigen Views –

+0

erneut einleitete Sicherheitsordner für den SQL-Server, und APPPOOL \ OPOC wurde der Anmeldeliste hinzugefügt. Daher glaube ich nicht, dass der von mir verwendete AppPool das Problem ist, aber ich bin völlig neu bei der IIS-Bereitstellung, mehr oder weniger, also Ich könnte falsch liegen –

Antwort

1

Fügen Sie den Benutzer der Datenbank, um zu versuchen haben und zu beseitigen Logins und gewähren Sie diesem Benutzer Zugriff auf die Datenbank. Die Verbindungszeichenfolge in Ihrem Code sollte ihre Anmeldeinformationen haben. Grund, warum es auf Ihrem Computer funktioniert, ist wahrscheinlich, weil Sie Systemadministrator oder etwas auf dem Server sind. Suchen Sie nach einer Möglichkeit, Anmeldeinformationen in die Parameter Ihrer Verbindungszeichenfolge einzugeben.

https://www.youtube.com/watch?v=Sp6lR15iWMk

+0

Eine andere Sache, die ich nach dem Blick auf den Produktionsserver gefunden habe - es hat die Identität für den AppPool NetworkService festgelegt. Ich habe das in der Testumgebung gemacht und es funktioniert genauso gut. Ich nehme an, dass die "NetworkService" -Identität Berechtigungen für jeden erteilt, der über gültigen Netzwerkzugriff auf diesen Server verfügt? –

+1

Uhm .. Bleiben Sie in einer domänengesteuerten Umgebung von 'NetworkService' fern.Es wird dringend empfohlen, ein Dienstkonto auf Domänenebene zu erstellen. – WickedFan

+0

Interessant, danke für die Warnung! Da es sich nicht um eine sehr kritische Anwendung handelt, gehe ich davon aus, dass mein Vorgänger, der ursprünglich all das erschaffen hat, nur die "Was auch immer es zum Laufen bringt" -Methode, die er oft benutzen möchte, benutzt. Würden durch das Festlegen der Identität auf LocalSystem weiterhin alle Computer in der Domäne auf die Anwendung zugreifen können (sofern dies gemäß den Domänenberechtigungen zulässig ist) oder müssen sie speziell auf der Host-Box einen erhöhten Status aufweisen? Ich sortiere das immer noch in meinem Kopf, aber du gibst bessere Informationen als jeder andere, also dachte ich, ich würde fragen. –