2014-03-31 10 views
24

Ich versuche, eine Website von einem 'AppPool' namens 'SomeAppPool' zu starten, der die 'ApplicationPoolIdentity' verwendet, und wenn ich dies erhalte, erhalte ich den folgenden Fehler ich starte auf der Website: ': \ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET Files c'IIS ApplicationPoolIdentity hat keine Schreibberechtigung für 'Temporäre ASP.NET-Dateien'

I

die aktuelle Identität (IIS_APPPOOL \ SomeAppPool) keinen Schreibzugriff haben Ich starte die Website mit 'Use Local IIS Web Server' unter Visual Studio 2012 (ohne Debugger angeschlossen) unter Windows 8.

Das erste, was mir aufgefallen ist, ist, dass der Ordner 'Temporary ASP.NET Files' nicht einmal existiert , so gibt es nichts, um Sicherheitsberechtigungen zu setzen.

Das zweite Problem ist, auch wenn es einen Ordner gab, welche Berechtigungen würde ich einstellen? Ich gehe davon aus, dass ich für jeden Benutzer, der über 'ApplicationPoolIdentity' erstellt wurde, keine Berechtigungen festlegen muss. Recht?

Die aktuellen Lösungen, die ich gesehen habe, schlagen einfach vor, den Benutzer auf "Netzwerkdienst" zu setzen, aber dies scheint die Isolation der Website zu brechen, für die 'ApplicationPoolIdentity' eingeführt wurde.

+0

Ich habe genau das gleiche Problem. Konnten Sie dafür eine Lösung finden? –

+0

Nein, leider habe ich nichts gefunden, um dieses Problem zu lösen. Ich fange an zu denken, dass es tatsächlich keine Lösung gibt. Es fällt mir jedoch schwer zu glauben, dass Microsoft die Funktion "ApplicationPoolIdentity" hinzufügen würde, ohne die Auswirkungen auf .NET-Anwendungen zu berücksichtigen. – karmasponge

+0

Sollte ich eine explizite Antwort hinzufügen als sagt nicht 'ApplicationPoolIndentity' mit .NET-Anwendungen? – karmasponge

Antwort

1

In der C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319 versuchen, den Befehl aspnet_regiis.exe auszuführen.

Normalerweise sollten die Berechtigungen eingerichtet werden. Wenn Windows-Programme zum Hinzufügen/Entfernen ausgeführt werden oder wenn neue .NET-Versionen installiert werden, werden diese Dinge ein wenig zurückgesetzt. Die aspnet_regiis.exe zu laufen sollte dort helfen.

Stellen Sie außerdem sicher, dass Sie Visual Studio als Administrator ausführen.

+1

Wenn ich versuche, "aspnet_regiis.exe -I" für die v4.0 auszuführen.30319 Framework unter Windows 8 Ich bekomme eine Fehlermeldung, dass es nicht unterstützt wird. Siehe diesen Artikel: http://www.c-sharpcorner.com/UploadFile/7e39ca/how-to-install-Asp-Net-4-5-in-windows-8/. – karmasponge

+0

Ich habe Visual Studio so eingerichtet, dass es immer als 'Administrator' ausgeführt wird. In diesem Szenario sehe ich jedoch nicht, warum dies einen Unterschied machen würde (da ich unter IIS aktiv bin). – karmasponge

53

This ASP.NET forum answer, in seinem Thread unbestätigt, war die Lösung für mich. Es hat auch keine Auswirkungen: Es versucht nicht, IIS neu zu registrieren oder dem Benutzer gefährliche Berechtigungen zu geben. Zusammenfassung der Antwort:

  1. Öffnen Sie ein Befehlsfenster als Administrator (Start/Programme/Zubehör, dann mit der rechten Maustaste über die Eingabeaufforderung, dann wählen Sie "Als Administrator ausführen").
  2. Geben Sie den folgenden Befehl ein:

    C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Aspnet_regiis.exe -ga domain\user 
    

Ersetzen Sie Ihre Domain und Benutzer für domain\user im Beispiel oben. Das war alles, was es brauchte. Die Microsoft-Dokumentation für Aspnet_regiis.exe lautet here. Beachten Sie, dass sich die Dokumentation für den Schalter -ga auf einen Fehler in Version 3.5 und früheren Versionen bezieht, in denen es mit lokalen Konten nicht funktionieren würde. Wenn ich es richtig lese, werden Domänenkonten für alle Versionen unterstützt und lokale Konten werden ab Framework 4.0 unterstützt.


-Update 6. Juni 2017: Für Windows 8 und höher, sollten Sie die dism stattdessen Befehl. Es ist in this SO answer abgedeckt. Danke an @codebrain für das Vorschlagen.


-Update 7. Juli 2015: @Vertigo freundlich kommentiert, dass diese Antwort auch für das NETWORK SERVICE Konto in .NET 2.0 arbeitete unter 2008R2/2012, so dass mein Haftungsausschluss oben über lokale Konten vor 4.0 falsch sein kann.

Wenn jemand anderes findet, dass dies für ein lokales Konto unter .NET 3.5 oder früher funktioniert, können Sie meine Antwort bearbeiten oder in den Kommentaren notieren; es wäre eine große Hilfe für andere, die dasselbe Problem erfahren könnten.

+1

Die Lösung wurde verwendet, um fehlende temporäre Ordner für die Version 2.0 unter 2008R2/2012 zu erstellen. Keine Probleme mit dem "NETWORK SERVICE" -Konto (obwohl es nicht wirklich lokalen Konto). – Vertigo

+0

Danke für das Update @Vertigo! Die Dokumentation war schwer für mich zu folgen (es ist nicht wirklich mein Fachgebiet), so dass Ihr Kommentar meine Antwort immens verbessert; Ich schätze es wirklich. –

+4

Achten Sie darauf, den Bereich 'domain \ user' mit Anführungszeichen zu umgeben, wenn er ein Leerzeichen enthält, z. '... -ga" IIS AppPool \ DefaultAppPool "' –

2

Zusammen mit den bewerteten Lösungen überprüfen Sie bitte Ihren Speicherplatz und stellen Sie sicher, dass genügend Speicherplatz verfügbar ist.

Ich bin gerade auf einem unserer Produktionsserver auf dieses Problem gelaufen und es war mit dem geringen Speicherplatz verbunden.

0

Ich lief gerade in das und was ich tat, war, ein neues Konto zu schaffen, lassen Sie uns sein "Webby" sagen.

Gehen Sie in ISS in die erweiterten Einstellungen Ihrer Seite und ändern Sie die "Physical Path Credentials" in das Webby-Konto. Das darüber liegende Pfadfeld enthält das Webseitenverzeichnis. Öffnen Sie diesen Ordner im Explorer und fügen Sie Webby mit Ändern Berechtigungen hinzu. Unter "Fehlgeschlagene Anfrageverfolgung" gibt es ein Protokollverzeichnis; füge auch Modify zu diesem hinzu und setze "Enabled" auf "True" (du kannst es später ausschalten, aber stelle sicher, dass es funktioniert). An diesem Punkt können Sie Ihre Website versuchen und Sie sollten auf jeden Fall die Fehlermeldung erhalten, wegen des Benutzers, den Sie verwenden.

Die aktuelle Identität (YOUR \ Webby) hat keinen Schreibzugriff auf "C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporäre ASP.NET-Dateien".

Um das Problem zu beheben, müssen Sie nun zum Verzeichnis "C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporäre ASP.NET-Dateien" wechseln und Webby ebenfalls hinzufügen Ändern funktioniert.

Die Lösung, ein spezielles Konto nur für Websites zu verwenden, ist eine gute Idee. Es ist ein echtes Konto (nicht virtuell wie ApplicationPool) und Windows wird nicht verwirrt (... so leicht).

Hoffe, das hilft.

3

Ich konfrontiert dasselbe Problem. Ich habe den Pfad c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\ auf der Suche nach Temporary ASP.NET Files überprüft, aber es gab keinen Ordner mit diesem Namen. Also habe ich manuell einen neuen Ordner erstellt und ihn Temporary ASP.NET Files genannt und das Problem behoben.

Stellen Sie also sicher, dass der angegebene Pfad existiert.

0

Ich habe den Fehler behoben, indem ich den Benutzer hinzugefügt habe, den der Anwendungspool zur IIS_IUSRS-Gruppe verwendet.

Verwandte Themen