Step 3: Folder permissions
This is the step that accounts for most first-run failures. ASP Uploader needs write access to two folders, and to nothing else:
- The temporary folder that incoming bytes are streamed into.
- The destination folder you finally save files to — whatever you set
SaveDirectoryto, or the folder you pass toMoveTo.
The account that needs the permission is the application pool identity, not your Windows
login. On IIS 7 and later it defaults to ApplicationPoolIdentity, which is the virtual
account IIS AppPool\<YourAppPoolName>. Check it in IIS Manager under
Application Pools → Advanced Settings → Identity, then grant Modify:
icacls "C:\inetpub\wwwroot\mysite\savefiles" /grant "IIS AppPool\DefaultAppPool":(OI)(CI)M
Or through the GUI: right-click the folder → Properties → Security →
Edit → Add, type IIS AppPool\DefaultAppPool, click
Check Names, and tick Modify.
Grant Modify, not Full Control — the pool identity should not be able to
change permissions. And remove script and execute permission from the upload folder so
a stored .asp file can never run. See the
upload security checklist.
Step 4: The licence file
The licence lives at aspuploader/license/aspuploader.lic and is read at runtime, so
installing or replacing it is a file copy — nothing to register and no restart required.
- The download package ships with a trial licence that expires after about 30 days. All features work exactly as they do in the full version.
- After purchase you receive your own
.licfile. Overwrite the trial one with it.
If you see License Error : (4) license expired!, the .lic file has passed
its date — drop in a current one. Nothing else needs to change.
Step 5: IIS settings for larger files
The stock IIS configuration caps a Classic ASP request body at 200 KB, which is the single most common reason a working install rejects real files. Two independent limits apply and both must be raised:
<!-- web.config in your site root -->
<configuration>
<system.webServer>
<!-- Classic ASP limit. Bytes. Default 200000. -->
<asp maxRequestEntityAllowed="1073741824" scriptTimeout="00:60:00" />
<security>
<requestFiltering>
<!-- Request filtering limit. Bytes. Default 30000000. -->
<requestLimits maxAllowedContentLength="1073741824" />
</requestFiltering>
</security>
</system.webServer>
</configuration>
Also set the application pool's Idle Time-out to 0 on upload-heavy sites, or IIS may decide the pool is idle and recycle it during a long transfer. Full detail in uploading large files in Classic ASP.
Step 6: Verify the installation
- Browse to your page. You should see the upload button rendered — if the page is blank, the include path is wrong.
- Upload a small image. The progress bar should appear and complete.
- Check that the file landed in your destination folder.
- Upload a file larger than 200 KB. If that fails where the small one worked, the IIS limits in step 5 have not been applied.
- Upload a file with a disallowed extension. It should be rejected in the browser, before transfer.
- Finally, save a file called
test.aspinto the upload folder by hand and request it. If it executes, fix the execute permission before going live.
Deploying to shared hosting
Because ASP Uploader is pure ASP, shared hosting needs no special treatment — there is no component to register and no administrator step. Upload the folder by FTP and confirm two things through your control panel:
- Classic ASP is enabled for the site.
- The upload folder has write permission. Most panels expose this as a per-folder checkbox.
If your host will not raise maxRequestEntityAllowed for you, a web.config
in your own site root usually still works, since both settings are permitted at site level on a
standard configuration.
Moving to a different server
Copy the site folder. That is the whole procedure — there is no registration to repeat and no machine-specific state, so the only things to re-check on the new box are the folder permissions from step 3 and the IIS limits from step 5.
If something does not work
| Symptom | Most likely cause |
|---|---|
| Blank page, or "File not found" on the include | The aspuploader folder is not where the include path says it is |
| Permission denied (800a0046) | The app pool identity has no Modify on the temp or destination folder |
| ASP 0104 Operation not Allowed | maxRequestEntityAllowed still at its 200 KB default |
| HTTP 404.13 | maxAllowedContentLength still at its ~28.6 MB default |
| License Error : (4) | Expired .lic file — replace it |
| 413 Request Entity Too Large | A proxy or CDN in front of IIS rejected the body |
Every one of these, with the exact fix, is covered in Classic ASP upload errors and how to fix them.
Next steps
- The complete Classic ASP upload tutorial — reading uploaded files in your own code
- Multiple file upload — turning on the queue and looping the results
- Validating file size and type
- Live demos with complete source for each pattern
- Full class reference