Issue with IIS Permissions with Enable32BitAppOnWin64
I am running a 64 bit computer. My application pool is configured to use NETWORK SERVICE. My application runs fine when it runs in 64 bit mode.
When running in 32 bit mode (Flag Enable32BitAppOnWin64 on the application pool), I frequently get permission errors with IIS unable to access it's on temporary folder. If I change the tempDirectory in the web.config, the issue is resolved temporarily. It frequently returns later on, after I make another change to my application.
Example when tempDirectory="c:\temp\iistemp4" Access to the path 'c:\temp\iistemp4\tbmpos\a93ceaf9\c953db72\ResX\header.ascx.resources' is denied. ---> System.UnauthorizedAccessException: Access to the path 'c:\temp\iistemp4\tbmpos\a93ceaf9\c953db72\ResX\header.ascx.resources' is denied.
Obviously, NETWORK SERVICE has access to the folder, since it actually created it. Reverting back to 64-bit mode solves the issue.
Process Monitor shows: 12:40:47.7314293 PM w3wp.ex开发者_如何学Goe 6184 CreateFile c:\temp\iistemp4\tbmpos\a93ceaf9\c953db72\ResX\header.ascx.resources ACCESS DENIED Desired Access: Generic Write, Read Attributes, Disposition: OpenIf, Options: Synchronous IO Non-Alert, Non-Directory File, Open No Recall, Attributes: n/a, ShareMode: None, AllocationSize: 0
This is the only access to it that I can see in Process Monitor.
However, if I open the folder using Windows Explorer, I get a few 'BUFFER OVERFLOW' on Information: Owner, DACL and Owner, Group, DACL. Did IIS create the file with improper permissions?
Any ideas?
Thanks to process monitor, I realized something had set odd permissions in my c:\temp\ and forced propagation to all children. This caused weirdnesses in odd contexts, such as this one.
I moved to another folder without any inherited permissions, cleaned up the permissions, gave network service full access, and it appears solved.
Did the failure does not occur because of resource sharing? Try watching with a tool like filemon.
精彩评论