Ich verwende Quartz.NET , um Hintergrundverarbeitung durchzuführen, wo ich letztendlich eine Verbindung zu meinem SQL Server herstelle. Das alles funktioniert lokal auf meinem Entwicklungscomputer gegen IIS Express, aber wenn ich es auf meinem Staging-Server, auf dem IIS läuft, veröffentliche, habe ich Probleme.
Der Code zum Verbinden mit der Datenbank könnte nicht einfacher sein:
%Vor%Dies löst jedoch eine Ausnahme aus:
System.Data.SqlClient.SqlException: Anmeldung für Benutzer 'IIS fehlgeschlagen APPPOOL \ somehost.somedomain.com '.
Ich bin zu 100% sicher, dass die Verbindungszeichenfolge korrekt ist, denn wenn sie in einer normalen Seite verwendet wird, funktioniert sie einwandfrei. Also wirft mich der Verweis auf IIS APPPOOL .
Verwendet die SqlConnection irgendwie nicht die Verbindungszeichenfolge, an die sie übergeben wurde? Irgendeine Form von seltsamen Benutzer-Identitätswechsel, wenn die Verbindung hergestellt wird?
Sagen Sie es anders. Wie mache ich die SqlConnection () Arbeit innerhalb des Threads, wenn ich weiß, dass die Verbindungszeichenfolge korrekt ist?
Sieht aus, als ob es versäumt, eine Verbindung zu SQL Server zu öffnen.
Sie müssen SQL Server für IIS APPPOOL\ASP.NET v4.0
anmelden und der Datenbank Berechtigungen erteilen.
Erweitern Sie in SSMS unter dem Server Sicherheit, klicken Sie dann mit der rechten Maustaste auf Logins und wählen Sie "Neue Anmeldung ...".
Geben Sie im Dialogfeld "Neue Anmeldung" den App-Pool als Anmeldename ein und klicken Sie auf "OK"
Sie können dann mit der rechten Maustaste auf den Login für den App-Pool klicken, Eigenschaften auswählen und "Benutzerzuordnung" auswählen. Überprüfen Sie die entsprechende Datenbank und die entsprechenden Rollen. Ich denke, Sie könnten einfach db_datareader
und db_datawriter
auswählen, aber ich denke, Sie müssten weiterhin Berechtigungen zum Ausführen gespeicherter Prozeduren erteilen, wenn Sie dies über EF tun. Sie können die Details für die Rollen hier
Refrance : Von jeff-ogata
Da Sie die Benutzer-ID und das Kennwort angegeben haben, müssen Sie "Integrated Security = False" auf die Verbindungszeichenfolge einstellen. Auf diese Weise wird der Benutzer des Anwendungspools nicht zur Verbindung mit der Datenbank verwendet. Zum Beispiel:
%Vor%Tags und Links sql-server c# asp.net iis webforms