Here are various things I've encountered while setting up and/or managing ASP.NET websites using IIS or Windows web hosting plans, and how I solved them. Feel free to email me additions, comments, and/or questions.
IIS 6+ is setup to return a 404 on executable types that are unrecognized or prohibited. This is the case with both ASP.NET 1.1 and 2.0.
Open the "Internet Information Services (IIS) Manager" under "Administrative Tools".
Navigate to the "Web Service Extensions" node.
Select "ASP.NET v1.1.4322" or "ASP.NET v2.0.50727" in the right pane.
Click "Allow".
If you don't see the expected version of ASP.NET listed under "Web Service Extensions", it's typically because IIS was installed after .NET. You can run the aspnet_regiis.exe utility to remedy this:
Get to a command prompt, e.g. Start>Run "cmd".
Enter "CD /D C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322" or "CD /D C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727" depending on which version of ASP.NET.
Enter "aspnet_regiis.exe -i".
Wait for the finished message; "Start installing ASP.NET (1.1.4322.0)" or "Start installing ASP.NET (2.0.50727.0)" depending on which version of ASP.NET.
Follow the previous set of steps to enabled ASP.NET in Web Service Extensions.
ASP.NET is getting an Access Denied error when trying to use "C:\Windows\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files\". The identity used by the application pool does not have read/write permissions to that directory.
Check the System Event Log (run "eventvwr /s"). You should see and Error and maybe a Warning as well from the W3SVC Source at the time you were trying to view the web site/service. One of these will give you a slightly more specific problem which should be resolved in this document.
The most likely cause is the identity specified could not be used for the application pool. In this case there should be a warning that occurred just before this error in the Event Log which is detailed below.
Confused? Got questions? Comments? Make use of your broadband and send me an email. I'll get back to you as soon as possible. Please be as specific as possible in your inquiry. Thanks!
A user is considered invalid if it isn't a member of IIS_WPG (Internet Information Services Worker Process Group) or it hasn't been granted the right to logon as a service. To check and possibly fix the latter, follow these steps:
Run Local Security Policy applet which is usually under Administrative Tools or you can Start>Run with "secpol.msc".
Expand the Local Policies node and click User Rights Assignment.
Open the "Log on as service" policy either by double-clicking or right-clicking and selecting Properties.
Click "Add User or Group..." and enter the name of the user for the app pool's identity.
Restart the machine. The security policy is only read on boot.
If this doesn't solve the problem, or for more detailed information you can check the Security Event Log for the user you specified as the identity around the time the problem occurred. There will usually be three entries under the categories: Logon/Logoff, Privilege Use, and then another Logon/Logoff. You can look at these to see what privileges that user was granted when it logged in, what came up when privileges were queried, etc. It's fairly hefty material.
Generally this is caused by the constructor of components created on the fly with XmlSerializer, such as SOAP client classes. Make sure the user the process is running under (the identity of the application pool for websites) has read/write permissions to the system temp directory, i.e. "C:\WINDOWS\TEMP\".
This is the equivalent of the ol' "Module not found" error from regsvr32 which didn't tell you what it was looking for that it didn't find either. Most commonly this will be msvcr71d.dll, and it's because you're using a debug version of the assembly.
This can happen on ASP.NET sites when you attempt to change application pools while IIS is still running. The surest fix is simply an IISRESET. Unless the IIS service itself is restarted, there doesn't appear to be any way to fix this.
If you get this when setting up a new website with the IIS Manager then it could be that the DefaultAppPool has been deleted. If that's the case, then just select an existing app pool in the website properties.
The ASP.NET application can't find its "web.config" file.
By Neil C. Obremski