2010-06-07 15 views
7

Zusammenfassung: Eine unserer Webanwendungen erfordert Schreibzugriff auf C:\Windows\Temp. Unabhängig davon, wie sehr ich die NTFS-Berechtigung schwäche, zeigt procmonACCESS DENIED.IIS 7.5, ASP.NET, Identitätswechsel und Zugriff auf C: Windows Temp

Hintergrund (was könnte oder nicht für das Problem relevant sein könnten): Wir verwenden OLEDB eine MS Access-Datenbank zuzugreifen (die außerhalb von C: \ Windows \ Temp). Unglücklicherweise benötigt dieser OLEDB-Treiber Schreibzugriff auf das TEMP-Verzeichnis des Benutzerprofils (das bei der Ausführung unter IIS 7.5 C: \ Windows \ Temp ist), andernfalls wird die gefürchtete OleDbException "Unbekannter Fehler" ausgelöst. Einzelheiten finden Sie unter KB 926939. Ich habe die Schritte im KB-Artikel ausgeführt, aber es hilft nicht.

Einzelheiten:

Dies ist die Ausgabe von icacls C:\Windows\Temp. Zu Debugging-Zwecken habe ich volle Berechtigungen an Everyone vergeben.

C:\Windows\Temp NT AUTHORITY\SYSTEM:(OI)(CI)(F) 
       CREATOR OWNER:(OI)(CI)(IO)(F) 
       BUILTIN\IIS_IUSRS:(OI)(CI)(S,RD) 
       BUILTIN\Users:(CI)(S,WD,AD,X) 
       BUILTIN\Administrators:(OI)(CI)(F) 
       Everyone:(OI)(CI)(F) 

Dies ist jedoch der Screenshot von procmon:

procmon screenshot

Desired Access: Generic Read/Write, Delete 
Disposition: Create 
Options:  Synchronous IO Non-Alert, Non-Directory File, Random Access, Delete On Close, Open No Recall 
Attributes:  NT 
ShareMode:  None 
AllocationSize: 0 
Impersonating: MYDOMAIN\myuser 

PS: Wenn sie als MYDOMAIN\myuser angemeldet, ich Dateien in C:\Windows\Temp mit dem Windows Explorer ohne Probleme erstellen können.

EDIT: Relevante Teile web.config:

<authentication mode="Windows" /> 
<identity impersonate="true" /> 
<authorization> 
    <deny users="?" /> 
    <allow users="*" /> 
</authorization> 

Authentifizierung scheint zu funktionieren, das heißt, System.Security.Principal.WindowsIdentity.GetCurrent().Name (die auf meine benutzerdefinierte Fehlerseite angezeigt wird) gibt MYDOMAIN\myuser.

+0

PS: Ich hielt auch diese stattdessen serverfault veröffentlichen, aber meine Vermutung wäre, dass dies ein Problem mit, wie Identitätswechsel ASP.NET-Handles statt mit einem Windows Konfigurationsproblem. – Heinzi

+0

Was sind die Werte für '' und '' in 'Web.config' und ist IIS für anonymen Zugriff konfiguriert (nicht sicher, ob dies noch in IIS7 anwendbar ist)? – scherand

+0

@scherand: Ich habe meine Frage aktualisiert. IIS7.5 scheint die .net-Einstellungen w.r.t zu verwenden. anonymer Zugang – Heinzi

Antwort

3

Haben Sie folgende Schritte auf diesen versucht: loadUserProfile and IIS 7 temporary directory failures

+0

Nun, genau das habe ich gemacht (Bewilligungen erteilen). Ich bin sogar soweit gegangen, um * volle * Berechtigungen zu erteilen. – Heinzi

+0

Wenn das ist das Temp dir, haben Sie * nicht * setzen Sie es auf loadUserProfile –

+0

@AndrewBarber: Der Artikel sagt: "* Die Antwort ist ziemlich einfach: Schalten Sie LoadUserProfile, ** oder ** ACL das Temp-Verzeichnis zu ermöglichen schreibt. * "Beachten Sie die" * oder * ". Laut dem Artikel sollte also nur das Festlegen der ACLs im temporären Verzeichnis * das Problem beheben, tut dies aber nicht. Aber ja, die Problemumgehung mit loadUserProfile ist sinnvoll, also +1 zur Antwort (noch keine "akzeptierte Antwort", da sie die ursprüngliche Frage nicht beantwortet - "warum funktioniert der Schreibzugriff auf C: \ Windows \ Temp nicht gerade? obwohl volle Berechtigungen gegeben sind "). :-) – Heinzi

Verwandte Themen