Every developer likes to take certain things for granted – like ASP.Net being configured correctly with IIS. However sometimes there will just be something non-obvious that is preventing ASP.Net pages from being served, returning an Http 500 error instead. The frustrating thing is that these are often caused by system configuration issues that most developers should never need to worry about. Below I offer some advice intended for IIS 5.1 on a local dev machine that resolves some of these errors. The problem is most likely:
- IIS or ASP.Net simply not installed correctly
- Security configuration
0. The Basics
First, try the classic: reboot your machine.
If that doesn’t work, then turn off friendly errors in IE (tools > options > turn of friendly errors). This will give you a more helpful message like “Logon failure: user not allowed to log on to this computer.” instead of just “500 Server error”.
1. Check that IIS works
Be aware of the difference between ASP.Net and IIS. ASP may be installed fine, but IIS may be messed up. Some general tips:
- See if you can view http://localhost/iishelp
- Try viewing an HTML page through IIS. This totally bypasses any ASP.Net issues.
If you can’t view IIS, then perhaps IIS is disabled or turned off.
2. Other Web Servers interfering with IIS
If this is the first time you installed IIS, perhaps there is another webserver running on your machine that is interfering with it (or if you disabled IIS and installed another Web Server). For example sometimes Java developers have another server using port 80 that blocks IIS. Try turning this other server off.
3. Uninstall and reinstall IIS and ASP.Net
Perhaps uninstalling and reinstalling will fix it.
- Restart IIS by typing iisreset at the command line.
- Reinstall ASP.Net by typing “aspnet_regiis.exe -i” at the command line.
If that doesn’t work, you can uninstall IIS and ASP.Net, rename the inetpub directory to effectively delete it (while still saving your files), and then reinstall IIS and ASP.Net. This may reset user account systems.
4. Set ASP.Net security permissions
Make sure that the ASP.NET user has rights on Inetpub. Add the ASPNET user to INETPUB folder’s users (Security tab in Properties) and granted it full control.
5. Check the Local security policy
In Admin Tools > Local Security Settings > Local Policies > Security Options > Audit Shut down system immediantly if unable to log secuiryt aufits –> should be disabled.
6. Check the Registry
In the registry editor (type regedit at the command line), check HKEY_LOCAL_MACHINE\SYSTEM\CurrentControLSet\CONTROL\LSA\CrashOnAuditFail
Set default = “0” (should not be “value not set”)
7. Check the Machine.config for security settings
As a last resort, change machine.config,probably located in a directory like: C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\CONFIG\machine.config
Look for the xml tag “<processModel”. This will have an attribute userName=”SYSTEM”. Change this from “System” to “MACHINE”.
Note that this is highly un-secure, but may be useful for letting you continue development while your IT staff investigates issues further.