Ich habe kürzlich einen Fehler beim Hosten meiner asp.net-Site mit IIS festgestellt. Ich habe eine Lösung gefunden, auf die viele schwören.
Lösung:
- Fügen Sie IIS_IUSRS mit Leseberechtigung für Dateien im Ordner hinzu
- Ändern Sie die IIS-Authentifizierungsmethode in BasicAuthentication
- Aktualisieren Sie die Website. Es wird klappen
( http://vivekthangaswamy.blogspot.com/2009/07/aspnet-website-cannot-read.html )
Was füge ich meiner web.config-Datei hinzu? Ich musste es noch nie bearbeiten. Hier ist der aktuelle Inhalt:
<?xml version="1.0"?>
<!--
For more information on how to configure your ASP.NET application, please visit
http://go.microsoft.com/fwlink/?LinkId=169433
-->
<configuration>
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;User Instance=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
<system.web>
<compilation debug="true" strict="false" explicit="true" targetFramework="4.0"/>
</system.web>
</configuration>
Mein Fehler ist:
Konfigurationsfehler: Die Konfigurationsdatei kann aufgrund unzureichender Berechtigungen nicht gelesen werden. Konfigurationsdatei
: \? \ C: \ Benutzer ***** \ Dokumente \ Visual Studio2010 \ WebSites \ PointsForTime \ web.config
asp.net
iis-7
file-permissions
Freesnöw
quelle
quelle
Antworten:
Es gibt kein Problem mit Ihrer web.config . Ihre Website wird in einem Prozess ausgeführt. In iis können Sie die Identität dieses Prozesses definieren. Die Identität , unter der der Anwendungspool Ihrer Website ausgeführt wird ( Netzwerkdienste, lokales System usw.), sollte über die Berechtigung zum Zugriff auf und zum Lesen der Datei web.config verfügen.
Aktualisieren:
Diese aktualisierte Antwort ist dieselbe wie oben, jedoch etwas länger und einfacher und verbessert.
Zunächst einmal : Sie müssen nichts in Ihrer Konfigurationsdatei ändern. Es ist in Ordnung . Das Problem liegt bei den Windows-Dateiberechtigungen .
Dieses Problem tritt auf, weil Ihre Anwendung nicht auf die Datei web.config zugreifen und diese nicht lesen kann.
Machen Sie die Datei für die Gruppe IIS_IUSRS zugänglich . Klicken Sie einfach mit der rechten Maustaste auf web.config und klicken Sie auf auf Eigenschaften , unter Sicherheits Registerkarte hinzufügen IIS_IUSRS .
Was ist das für eine IIS_IUSRS-Sache?
Ihre Website ist wie eine Exe- Datei. Genau wie jede exe-Datei sollte es sein von einem Benutzer gestartet werden und gemäß den diesem Benutzer zugewiesenen Berechtigungen ausgeführt werden.
Wenn Ihre Site in IIS gestartet wird , ist der Anwendungspool Ihrer Website zugeordnet einem Benutzer zugeordnet ( Netzwerkdienste, lokales System usw.) (und kann in IIS geändert werden).
Wenn Sie also IIS_IUSRS sagen , bedeutet dies jeder Benutzer ( Netzwerkdienste, lokales System usw.), unter dem Ihre Site ausgeführt wird.
Und wie @Seph im Kommentar unten erwähnt : Wenn sich Ihr Computer in einer Domäne befindet , denken Sie daran, dass die IIS_IUSRS- Gruppe eine lokale Gruppe ist . Stellen Sie außerdem sicher, dass beim Versuch, diesen Benutzer zu finden, der Speicherort auf den lokalen Computer und nicht auf eine Unternehmensdomäne festgelegt wird.
quelle
IIS_IUSRS
und um sicherzustellen, dass beim Versuch, diesen Benutzer zu finden, der Speicherort auf den lokalen Computer und nicht auf eine Unternehmensdomäne festgelegt wird.Ich hatte anscheinend das gleiche Berechtigungsproblem in der
web.config
Datei.Mein Problem wurde jedoch dadurch verursacht, dass IIS die Konfigurationsdatei nicht laden konnte, da sie Regeln zum Umschreiben von URLs enthielt und ich das Modul zum Umschreiben von IIS-URLs nicht auf dem neuen Server installiert hatte.
Lösung: Installieren Sie das Rewrite-Modul.
Hoffe das spart jemandem ein paar Stunden.
quelle
error:
:) +1 Da ich kein SSL benötige, habe ich die URL zu HTTPS neu geschrieben, falls jemand ohne https verlinkt ist. Was für ein Rätsel.Ändern der Identität von ApplicationPoolIdentity in LocalSystem hat die Arbeit erledigt;).
Ich verwende win7 64 mit IIS 7.5
Weitere Informationen zur Anwendungspoolidentität in IIS 7.5 und Win 7
quelle
Ich hatte das gleiche Problem, als ich versuchte, den Site-Stammordner für einen anderen Benutzer freizugeben. Einige Ordner haben die Berechtigung verloren. Also habe ich die Schritte befolgt, um die Berechtigung zu IIS_IUSRS hinzuzufügen Gruppe , wie von Afshin Gh vorgeschlagen. Das Problem ist, dass diese Gruppe für mich nicht verfügbar war. Ich benutze Windows 7.
Was ich getan habe, habe ich nur einige Schritte geändert:
Das hat bei mir funktioniert.
quelle
C:\
ieC:\Dev
oderC:\Code
usw. Die SicherheitsgruppeAuthenticated Users
wird für denC:\
Ordner erteilt und an untergeordnete Ordner weitergegeben. ImC:\Users
Ordner wird diese Weitergabe jedoch gestoppt. Entwickler wie ich, die ihren Code im Basisordner hosten, müssen ZugriffAuthenticated Users
auf diese IIS -Stammordner gewähren , damit IIS funktioniert.Sie müssen nichts in Ihrer web.config ändern.
Das Problem sind Dateisystemberechtigungen. Ihre Dateiberechtigungen erlauben dem Benutzer IIS_IUSRS nicht, auf web.config (oder wahrscheinlich auf eine der Dateien) zuzugreifen. Ändern Sie die Dateiberechtigungen in Windows, damit das IIS_IUSRS-Konto darauf zugreifen kann.
quelle
Machen Sie die Datei für IIS_IUSRS zugänglich Gruppe . Klicken Sie mit der rechten Maustaste auf Ihre web.config, erweitern Sie die Eigenschaften und fügen Sie auf der Registerkarte Sicherheit IIS_IUSRS hinzu. Geben Sie der Gruppe Lese- / Schreibzugriff.
Wenn die Gruppe NICHT verfügbar ist, ersetzen Sie IIS_IUSRS durch Computername \ IIS_IUSRS
quelle
Gehen Sie zum übergeordneten Ordner, klicken Sie mit der rechten Maustaste und wählen Sie Eigenschaften . Wählen Sie die Registerkarte Sicherheit , bearbeiten Sie die Berechtigungen und fügen Sie hinzu . Klicken Sie auf Erweitert und dann auf Jetzt suchen . Wählen Sie IIS_IUSRS aus und klicken Sie erneut auf OK und OK . Stellen Sie sicher, dass Sie das Kontrollkästchen Schreiben aktiviert haben . Klicken Sie auf OK und OK erneut auf .
Job erledigt!
quelle
Wenn Sie IIS_IUSRS Berechtigungen erteilen , sollten Sie überprüfen, ob im Abschnitt IIS / Authentifizierung Ihrer Webanwendung die Anonym-Authentifizierungsdaten die Anwendungspoolidentität und nicht IUSR verwenden.
quelle
Aus irgendeinem Grund ist Ihre web.config schreibgeschützt. Deaktivieren Sie die Option readonly der Datei web.config.
quelle
Ich musste Berechtigungen zu IUSR hinzufügen (zusätzlich zu ISS-IUSRS, wie andere vorgeschlagen haben). (Siehe auch: http://codeasp.net/blogs/raghav_khunger/microsoft-net/2099/iis-7-5-windows-7-http-error-401-3-unauthorized )
quelle
Ich habe subst verwendet, um ein Mapping von D: nach C: zu erstellen, um das gleiche Setup wie bei anderen Entwicklern im Team beizubehalten. Dies gab mir auch die gleichen Fehler wie beschrieben. Das Entfernen hat es für mich behoben.
quelle
Die akzeptierte Lösung war nichts für mich. Ich benutze ein Git-Repo und es hat in den folgenden Ordner geklont
Ich habe eine neue IIS-Website erstellt und auf den Pfad hingewiesen. Welches hatte nicht die iis_iusrs Berechtigungen in der akzeptierten Lösung vorgeschlagen. Als ich die Berechtigungen hinzufügte, funktionierte es immer noch nicht.
Es begann erst zu funktionieren, als ich der Gruppe 'Benutzer' die folgenden Berechtigungen erteilte und die Vererbung die Berechtigungen an web.config kaskadierte. Wahrscheinlich sollte es nur auf die web.config angewendet werden, um die Angriffsfläche zu reduzieren.
quelle
Wir hatten eine Website mit einer bestimmten Identität im Apppool, nur nachdem dieser Benutzer Lesezugriff auf den Ordner mit der Datei web.config erhalten hatte, würde dies funktionieren. Wir haben dies aufgespürt, nachdem wir den Benutzer "Jeder" mit "Lesen" hinzugefügt hatten, und alles hat gut funktioniert.
quelle
Für mich trat der Fehler beim Debuggen auf meinem lokalen Computer auf und stellte sich als mit der Basis web.config verbunden heraus, die vom .NET Framework beim Kompilieren der Website initiiert wird. Meine Datei C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Config \ web.config hatte ein nicht erkanntes Element (folderLevelBuildProviders). Durch Beheben dieses Problems wurde der Fehler 500.19 behoben.
Siehe dies: IIS Manager kann die .NET-Kompilierung in .NET 4-Anwendungen nicht konfigurieren
quelle
Das Ändern der Prozessmodellidentität in LocalSystem hat dieses Problem für mich behoben. Sie finden diese Einstellung, wenn Sie mit der rechten Maustaste auf den Anwendungspool klicken und "Erweiterte Einstellungen" auswählen. Ich verwende IIS 7.5.
quelle
Klicken Sie mit der rechten Maustaste auf Web.Config => Registerkarte Sicherheit => Schaltfläche Bearbeiten => Schaltfläche Hinzufügen => Schaltfläche Erweitert => Schaltfläche Jetzt suchen => Wählen Sie in den Suchergebnissen Ihre Gruppe aus (in unserem Fall "IIS_IUSRS") => Ok => Ok => OK
quelle
Dies ist uns passiert, als die IIS-Anwendung über ein virtuelles Verzeichnis mit einem physischen Pfad verfügt , der Schrägstriche /anstelle von Schrägstrichen enthält \. Dies wurde versehentlich mithilfe einer Powershell-Verwaltungs-API für IIS während unseres kontinuierlichen Bereitstellungsprozesses durchgeführt.
Beispiel für eine schlechte Konfiguration -
applicationHost.config
Stellen Sie sicher, dass das
physicalPath
Attribut keine Schrägstriche /, sondern nur Schrägstriche enthält\Korrigiertes Konfigurationsbeispiel -
applicationHost.config
quelle
C:\inetpub\MySite\\MyService
. Das Ändern in einen einzelnen Schrägstrich hat funktioniertIch habe dieses Problem gelöst, indem ich dem Ordner für den Benutzer des Anwendungspools (WIN SERVER 2008 R2) eine Leseberechtigung hinzugefügt habe: C: \ Windows \ System32 \ inetsrv \ config
Ein kleiner Hintergrund: Unser Server wurde mit einem klassischen Fehler gehackt, bei dem der App-Benutzer mehr Berechtigungen hatte als er sollte (lokaler Administrator).
Um dies zu beheben, haben wir einen neuen Domänenbenutzer erstellt, der nur über Berechtigungen für den Anwendungsordner mit mindestens erforderlichen Rechten verfügt, und ihn als Benutzer des Anwendungspools zugewiesen. als wir in der Ausgabe getroffen haben und dies war eine Lösung für unsere Probleme.
quelle
Verschieben Sie Ihr Projekt auf ein anderes Laufwerk als C: Hat bei mir mit demselben Fehler funktioniert.
quelle
Dies kann passieren, wenn sich Ihre Anwendung in einem virtuellen Verzeichnis befindet und der Pfad zu den Dateien ein zugeordnetes Laufwerk ist.
Wenn Sie den Pfad zu den Dateien auf ein lokales Laufwerk ändern, wird dies behoben, wenn dies tatsächlich Ihr Problem ist.
quelle
Alle Antworten sind gültig und funktionieren unter verschiedenen Umständen.
Für mich hat der Neustart von Visual Studio funktioniert.
quelle
Die obigen Antworten waren hilfreich, aber falls dies jemandem hilft - ich hatte genau dieses Problem und es stellte sich heraus, dass ich (Windows-Netzwerk) den Stammordner freigegeben habe, von dem aus die Site gehostet wurde. Wir haben die Freigabe beendet und die Berechtigung des Benutzers zum Lesen / Ausführen hinzugefügt, und es hat wieder einwandfrei funktioniert.
Ich vermute, die Aktie hat es vermasselt.
quelle
Ich erhielt auch die Meldung "Konfigurationsdatei kann aufgrund unzureichender Berechtigungen nicht gelesen werden". Es stellte sich heraus, dass die ISAPI- und CGI-Einschränkungen in IIS für ASP.NET 4.0 32-Bit und 64-Bit abgelehnt wurden. Das Markieren von beiden als Zulässig behebt mein Problem.
quelle
Hatte dieses Problem mit einer virtuellen Anwendung. Alle Berechtigungen wurden festgelegt. IIS_IUSRS, AppPoolIdentity und gab dann allen vollen Zugriff. Nichts hat geklappt. Apppool, Site und IIS neu gestartet, aber kein Los.
Die virtuelle Anwendung wurde gelöscht und von Grund auf neu hinzugefügt, und sie begann zu funktionieren.
Ich wünschte, ich wüsste, was es gelöst hat.
quelle
Überprüfen Sie, ob die Datei trotz der Berechtigung IIS_IUSRS nicht als schreibgeschützt markiert ist. Sie zeigt dieselbe Meldung an.
quelle
Ich hatte diese Fehlermeldung, die darauf zurückzuführen war, dass sich mein physischer Ordner auf einem Netzwerklaufwerk und nicht auf dem lokalen Laufwerk befand. Es scheint, dass die Berechtigungen für solche Laufwerke standardmäßig unterschiedlich sein können. Während der lokale Speicherort den Benutzern des lokalen Computers die Berechtigung erteilte, war dies beim Netzwerkstandort beispielsweise nicht der Fall.
Ferner funktioniert die akzeptierte Antwort für einen solchen Fall nicht. Die lokalen Benutzer oder IIS-Benutzer waren nicht verfügbar, um Berechtigungen zuzuweisen. Die Lösung bestand darin, den physischen Ordner auf das lokale Laufwerk zu verschieben.
quelle
Ich hatte das gleiche Problem und nachdem ich alle hier als Antworten geschriebenen Dinge getan hatte, wurde es immer noch reproduziert. Die zweite Hälfte des Problems war die Tatsache, dass .NET unter "Windows-Funktionen aktivieren oder deaktivieren" deaktiviert wurde.
quelle
Wenn es sich um einen neuen Server handelt, müssen Sie manchmal die ASP.NET-Funktion in IIS konfigurieren oder installieren, damit sie Ihre web.config-Datei lesen kann.
In meinem Fall war dies der Grund.
quelle
In meinem Fall habe ich versucht, Seiten von einem zugeordneten Laufwerk (Subst) zu hosten. Das Problem ist, dass der Subst unter meinem Konto ausgeführt wurde und der IIS-Benutzer nicht dasselbe Laufwerk sehen kann
quelle
Ich gab die Erlaubnis und benutzte ICACLS.exe, funktionierte aber nicht. Dann habe ich den physischen Pfad geändert und es hat erfolgreich funktioniert.
(IIS 8.5 Windows 2012 R2)
quelle