For a Classic ASP site, that path usually points to a permissions problem on a temporary folder used by the worker process or impersonated identity, not necessarily to actual .NET code inside the ASP pages.
Try this end-to-end path:
- Identify which identity is actually failing
- Use Process Monitor or FileMon and reproduce the error.
- Filter for
w3wp.exeand look forACCESS DENIEDentries. - This confirms whether the failing identity is the Application Pool identity,
IUSR,NETWORK SERVICE, or an impersonated user.
- Check the Application Pool identity and profile behavior
- In IIS Manager, open Application Pools.
- Select the pool used by the Classic ASP site.
- Open Advanced Settings.
- Check Identity and Load User Profile.
-
loadUserProfileisfalseby default. If profile loading is involved, the temp location used by the process can change.
- Grant permissions to the correct temp location
Based on the identity and profile behavior, make sure the failing identity has write access to the temp folder it is actually using:
-
%SystemDrive%\Windows\Temp - or
%SystemDrive%\Windows\ServiceProfiles\NetworkService\AppData\Local\Temp - or the Temporary ASP.NET Files location reported in the error
-
- If impersonation is enabled, test without it
- If the site or related configuration is impersonating a user, the request may be running under that user instead of the app pool identity.
- In ASP.NET scenarios, impersonation can be configured in
Web.configwith:<identity impersonate="true" userName="<supplied username>" password="<supplied password>" /> - If impersonation is in effect, the impersonated account must have NTFS permissions on the temp folder.
- If possible, test with impersonation disabled so requests run consistently under the Application Pool identity.
- Use a safe troubleshooting test on the app pool identity
- As a troubleshooting step only, temporarily change the IIS App Pool identity to a highly privileged account such as Local System.
- If the site starts working, that confirms the root cause is missing NTFS permissions for the normal process identity.
- Do not leave it configured that way as a solution.
- Check IIS logs and status codes
- Review IIS logs for
401.xor500errors. - A
401.3indicates unauthorized access due to ACLs on a resource, which is consistent with missing NTFS permissions. - If the browser only shows a generic
500 Internal Server Error, disable friendly HTTP errors and also check Event Viewer for more detail.
- Review IIS logs for
- If the error specifically references Temporary ASP.NET Files
- Create or use a dedicated temp folder for the site if needed.
- Grant only the site’s process identity Modify access to that folder.
- This can help isolate the site from shared temp-folder permission issues.
Since permissions were already granted to C:\Windows\Temp, the next likely issue is that the failing request is using a different identity or a different temp path than expected. The fastest way forward is to capture the exact ACCESS DENIED entry for w3wp.exe, then align NTFS permissions on that specific folder for that specific identity.
- Using Classic ASP with Microsoft Access Databases on IIS
- Permissions to connect to a remote Access database from ASP.NET
- Troubleshooting common permissions and security-related issues in ASP.NET
- ASP.NET Partial Trust does not guarantee application isolation
- Use Failed Request Tracing to troubleshoot Classic ASP errors