ASP.NET/IIS7.5 Schreiben der Log-Datei Funktioniert Nicht (Rechte, UAC, Config., ???)
Wir haben Probleme bei der Migration unserer ASP.NET Anwendungen, die auf Windows Server 2008 R2 x64 und IIS7.5. Das problem ist, dass unsere ASP.NET apps Schreibe log-Dateien und log-Dateien werden nicht geschrieben. Die einzige Möglichkeit, die apps schreiben Ihre log-Dateien, wenn ich angemeldet bin, den server als lokalen Administrator-Benutzer oder wenn ich mit der rechten Maustaste und führen Sie IE als Administrator Ausführen, von denen keines eine akzeptable Lösung für uns.
Unserer Plattform ist:
Windows Server 2008 R2 x64 (UAC-Einstellung ist die Standardeinstellung)
IIS7.5
ASP.NET 4.0 (mithilfe der Windows-Authentifizierung und Identitätswechsel, sowohl auf im web.config)
Unserer app wird installiert:
D:[appname]
[appnameWebSite] (alle die .aspx -, .dll, etc. Dateien sind in hier)
\Log (die app versucht zu schreiben der log-Datei in diesem Ordner)
Auf dem server:
Erstellt eine neue App-Pool (name: [appname], .NET 4.0, Pipeline-Managed-Modus: Klassiker, die Identität ApplicationPoolIdentity, Benutzerprofil Laden: False, alle anderen Eigenschaften sind die Standardwerte)
Erstellt IIS-Anwendung auf D:[appname][appnameWebSite] und fügte hinzu, es, die den neuen App-Pool (Full-trust-level)
Haben Sie einen domain user in die lokale Gruppe Administratoren
Alle, die Konfiguration und die default-Einstellungen aufgeführt, die ASP.NET app nicht schreiben der log-Datei. Die app scheint gut zu funktionieren im browser, aber keine log.txt Datei.
Zu versuchen, zu "reparieren" diese Probleme haben wir versucht, viele Dinge:
Versucht Anwendungspool-Einstellung: Pipeline-Managed-Modus: Integriert
Versucht Anwendungspool-Einstellung: Identität: NetworkService
Versucht Anwendungspool-Einstellung: Identität: LocalSystem
Versucht Anwendungspool-Einstellung: Benutzerprofil Laden: True
Gab Sie der Gruppe Benutzer Vollzugriff auf die Datei-system für unsere Anwendung Ordner-Struktur (versucht appname Ordner, versuchte Log-Ordner ist nur, versucht appnameWebSite-und Log-Ordner nur)
Gab IIS AppPool[appname] (passend zu den neuen App-Pool) Benutzer Vollzugriff auf die Datei-system für unsere Anwendung Ordner-Struktur (versucht appname Ordner, versuchte Log-Ordner ist nur, versucht appnameWebSite-und Log-Ordner nur)
Keines dieser Dinge geholfen. Erneut, die app würde gut laufen, nur keine log-Datei erstellt.
Wie oben erwähnt, der einzige Weg, dass die log-Datei wird erstellt, wenn die app ausgeführt wird, ist, wenn wir am server anmelden mit dem lokalen Administrator-account (was Sinn macht, denn er ist ein super-user) oder, wenn wir mit IE als administrator und Erhöhung von Berechtigungen.
Irgendwelche Vorschläge? Hilfe? Fragen?
Dank!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe versucht, die Erteilung jeder Erlaubnis möglich und war immer noch nicht immer alle log-Dateien. Schließlich stieß ich auf diese die vorgeschlagene änderung der Besitz meines logfiles-Verzeichnis. Ich habe überprüft, und das Verzeichnis Eigentum war SYSTEM festgelegt. Ich habe ihn an Administratoren und angewendet, die änderung rekursiv. Ich prallte IIS, schlagen Sie eine Seite, von der Website in den browser, und jetzt habe ich den log-Dateien. Hurra!
Hinweis: die Sache, kippte mich aus war die überprüfung der System-event-log. Ich war immer 15006 Fehler zu sagen: "Besitzer von Protokolldatei oder-Verzeichnis C:\inetpub\logfiles\W3SVC1\some.log ist ungültig. Dies konnte sein, weil schon von einem anderen user erstellt die Protokolldatei oder-Verzeichnis".
Gut, nach Tage versuchen jede option IIS, Benutzer-und Gruppenkonten, die Datei system Berechtigungen, Prozess Explorer, etc., Ich denke, dass wir habe es funktioniert:
Und Erfolg! Die log-Datei geschrieben wird, wie erwartet, egal, was Nutzer mit dem ASP.NET Anwendung, und egal, wenn Sie es läuft auf dem server selbst oder von einer Arbeitsstation aus.
Ich weiß nicht, ob ausschalten Verstärkte Sicherheitskonfiguration für Internet Explorer auf dem server ist die "richtige" Sache zu tun, oder wenn es verletzt, best practices, aber es scheint zu funktionieren für uns.
Hat jemand etwas hinzuzufügen?
Ich kämpfte mit diesem für eine Weile. Die ApplicationPoolIdentity ist ein Mitglied der Gruppe Benutzer und der Gruppe Users Zugriff eingeschränkt hat.
Vom Explorer mit der rechten Maustaste auf den Ordner, in dem Sie versuchen, zu schreiben, und gehen Sie zu Sicherheit. Klicken Sie auf die Schaltfläche "Erweitert". Sie werden sehen, dass der Benutzer über die Berechtigung Lesen und Ausführen und der Gruppe Benutzer möglicherweise oder möglicherweise nicht über Spezielle Berechtigungen. Wenn nicht, Klicken Sie auf Ändern von Berechtigungen und Benutzern die Möglichkeit zu Dateien Erstellen /Daten schreiben und Ordner Erstellen /Daten Anhängen. Diese beschränkt sich auf diesen Ordner. Ich usially ein Unterverzeichnis verwenden, so dass ich nicht bieten Schreibzugriff auf meiner gesamten website.
Versuchen erstellen von log-Dateien wieder. Dies ist die einzige Berechtigung, die ich brauchte, um es zu schaffen.
Mir den trick geben, die Schreibrechte für
SYSTEM
undAdministrators
nicht nur auf den log-Ordner selbst, aber auch jeden Ordner im Pfad. Dies ist nicht, wie die Berechtigungen in der Regel in Windows arbeiten, aber IIS scheint wirklich etwas besonders. Nicht, dass es einen guten Grund, diese zu entfernen, zwei aus den ACLs zu beginnen.Wenn Sie vermuten, dass von dieser das problem zu sein, überprüfen Sie die Ereignisanzeige unter Windows-Protokolle /System. Dieses Problem manifestiert sich als ein Fehler-Eintrag aus der Quell-HttpEvent und liest "Nicht um die Protokolldatei zu erstellen C:\path\to\logs\W3SVC1\u_extend1.log. Stellen Sie sicher, dass das logging Verzeichnis korrekt ist und dieser computer verfügt über Schreibzugriff auf dieses Verzeichnis haben."
P. S. Dies gilt für die IIS-10, kann aber für andere Versionen auch.