.NET SqlClient-Anmeldefehler von Hintergrundthread in ASP.NET WebForms-Anwendung

8
  • ASP.NET 4.51, WebForms, VS2013

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?

    
TheEdge 23.12.2015, 12:49
quelle

4 Antworten

5

Testen Sie den Anwendungspool - & gt; Erweiterte Einstellungen

Netzwerkdienste

    
Valentin Petkov 29.12.2015 20:20
quelle
3

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

    
Hussein Khalil 28.12.2015 10:52
quelle
1

Versuchen Sie, die integrierte Sicherheit in Ihrer Verbindungszeichenfolge auf false zu setzen. Das sollte verhindern, dass es versucht, die Windows-Authentifizierung zu verwenden.

Ссылка

    
Taraz 02.01.2016 21:06
quelle
0

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%     
TheDaveJay 03.01.2016 00:47
quelle

Tags und Links