Die Fehlermeldung "Login failed for user 'NT AUTHORITY\IUSR'" ASP.NET und SQL Server 2008
Meine ASP.NET v3.5 web-Anwendung wirft folgende exception, wenn versucht wird, eine Verbindung zu einer SQL Server 2008-Datenbank:
System.Daten.SqlClient.SqlException:
Kann Datenbank nicht öffnen "MyDbName"
die von der Anmeldung angeforderte. Die Anmeldung
fehlgeschlagen. Fehler bei der Anmeldung für den Benutzer 'NT -
- AUTORITÄT\IUSR'.
Die Sache ist die, ich habe NT AUTHORITY\IUSR
zu der der server die Liste der Anmeldungen, und die Datenbank der Liste der Benutzer. Für den server habe ich erteilt der Nutzer der Öffentlichen Rolle, und für die Datenbank habe ich erteilt db_datareader
Berechtigungen.
Habe ich ihm auch das gleiche für NT AUTHORITY\NETWORK SERVICE
, die die Identität, dass der Anwendungspool ausgeführt wird, unter.
Die web-Anwendung gehostet wird, die von IIS7, ob das einen Unterschied macht. Das problem repros, wenn die DB und IIS auf der selben physischen Maschine wie gut.
InformationsquelleAutor Justin R. | 2009-08-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der trick hier ist, dass
NT AUTHORITY\NETWORK SERVICE
tatsächlich erscheint die Datenbank alsDOMAINNAME\MACHINENAME$
(Hinweis: die$
melden!!!). Das ist, wenn du über die Maschine-Grenze von Ihrem web-server, SQL-Server, SQL-Server sieht die Computer-Konto-wenn Sie dieNETWORK SERVICE
oderLOCAL SYSTEM
Konten. Wenn Sie alle anderen nicht-Domänenkonto, SQL-Server wird nicht erhalten Sie Ihre Anmeldeinformationen.Ich bin ein bisschen verwirrt von deiner Fehlermeldung. Ehrlich gesagt, ich glaube nicht, dass wenn die DB auf einem anderen Feld, werden Sie sehen, etwas anderes als
Login Failed for NT AUTHORITY\ANONYMOUS LOGON
.IUSR
verwendet, um anonyme websites, und die nicht bestehen können, über den Draht zu SQL Server. Sie können einen Weg finden, für Sie zu arbeiten, wenn Sie alles auf der gleichen Maschine, aber ich würde nie wissen, denn ich würde das nie tun... 😉Wollte nur hinzufügen, dass auch ich diese Aufgabe gelöst durch die Schaffung von Berechtigungen für die IUSER Benutzernamen in IIS 6.0 Web-Seiten - >Eigenschaften->Sicherheit->Bearbeiten (Authentifizierung,...), die war IUSR_MACHINENAME
Wie haben Sie das hinzufügen von Berechtigungen für die MachineName$ in VS
Danke!!! Change Directory Security problem lösen.
InformationsquelleAutor Dave Markle
Ich würde vorschlagen, erstellen Sie eine separate (vorzugsweise Domänen -) Konto, und geben Sie es in der Verbindungszeichenfolge (in der Regel im web.config)
Dann Schränken Sie die Berechtigungen auf dem web-server, was dieses Konto kann und was nicht.
Dann können Sie gewähren Sie diesem Konto die erforderlichen Berechtigungen in SQL server.
InformationsquelleAutor DmitryK
Ich hatte das gleiche problem und löste dies durch sich ändernde Anwendungs-pool.
InformationsquelleAutor Roman Ostashevskyi
Falls es jemandem hilft, im web.config Hinzugefügt habe ich <identity impersonate="false" /> für diesen Fehler Weg zu gehen (unter <system. web - >)
InformationsquelleAutor Smyrnian
Anstatt
Integrated Security=True;
in einer Verbindungszeichenfolge benutzen Sie einfach Benutzername und Passwort-Authentifizierunguser=sa; pwd=mypassword;
InformationsquelleAutor
Es ist wichtig zu beachten, dass Sie diese Fehlermeldung erhalten, als ich gerade Tat, wenn Sie nicht über den IIS so konfiguriert, dass Identitätswechsel, aber Sie haben Ihre web.config versucht, um Identitätswechsel.
Ich kam gerade über diesem genauen Fehler und alle folgenden Schritte sind erforderlich (aber mir fehlt der erste Schritt:
1.) Sicher ASP.NET der Identitätswechsel aktiviert ist auf Ihrem IIS web-server:
2.) Kombinieren Sie das mit der Konfiguration Ihrer Website zu verwenden, Identitätswechsel (web.Konfiguration):
3.) Die oben genannten Schritte davon aus, dass Sie einen SQL-Login-setup auf dem MSSQL für 'your_service_acct' mit Berechtigungen
Beim laufen auf localhost, gegen eine localdb, oder sogar eine remote-db, den Sie persönlich haben Berechtigungen auf die Entwicklung IIS ausgeführt wird, als ob es waren SIE - und alles nur auf Magische Weise funktioniert. Also, im debug-Modus, werden Sie nicht brauchen, um eine Besondere web.config..
Sobald Sie bei der Bereitstellung Ihrer Website auf einem server (in meinem Fall, unsere TEST-Umgebung), werden Sie wahrscheinlich benötigen, um die oben beschriebenen Schritte durchgeführt, die ich gerade ausführlich, da IIS versucht zu verbinden es als Anwendungspool-Benutzer, die nicht in der Regel, was Sie wollen, administrativ zu sprechen. Also, das ist, wenn Sie wollen, um zu starten mit web.config-Transformationen, so wird Visual Studio fügen Sie die entsprechenden
identity impersonate="true"
während Ihrer " Veröffentlichen...' Bereitstellung-Schritt.InformationsquelleAutor bkwdesign
Die einfache Lösung ist auf Ihrer Website zu überprüfen.config-Datei und stellen Sie sicher, dass einer von diese ist Teil der db-Verbindungszeichenfolge:
Trusted Connection=false
ODER
Integrated Security=True
InformationsquelleAutor Samnan
Dieses problem wird angezeigt, wenn Sie zur Wiederherstellung eine neue Datenbank auf Ihrem Datenbank zuletzt.
Diese zu lösen, müssen Sie auf SQL-Server, dann auf Sicherheit und dann legen Sie Ihre apppool wieder.
InformationsquelleAutor mahmoud