Very strange problem. I am running Windows Server 2003, with IIS 6.0. In one of the websites, there are three virtual directories: A, B, and C. For whatever reason, and, from my understanding, nobody touched the box, A and C are having a major issue. Any page in those virtual directories, whether you browse through IIS or an external client, displays a page not found. I looked up the error in the log file. It's a 404.0 HTTP error, Windows Status error 2. So, the page is not found, and the system cannot find the file specified.
The files are there, every single one of them.
As a test, I created a new virtual directory with the name "D" (without quotes), pointing to the same directory as virtual directory "C" and, sure enough, it worked. How is it possible that C does not work and D works, yet they both point to the same physical directory?
As another test, I deleted virtual directory "C" and recreated it. And what happened? The page could not be found for any files in that virtual directory.
I checked IIS's XML files and they looked okay.
There must be some registry entry or some dependency of IIS that is corrupt or missing which is causing problems.
I would really appreciate some advice.
Thank you.
The answer appeared to be something outside of IIS by a program called KnowledeBase, which leverages IIS. Something or someone ran their administration or registration program, which changed one or two registry of their registry entries. Their registry entries include parameters that store the drive letter of data files, and running this program deleted or reset these entries. I only knew this after getting in touch with the vendor of this KnowledgeBase program. Not only that but I couldn't browse the files from IIS. The vendor has an isapi filter which blocks this request and forces you to login from a client to access the pages. They claim this is for security reasons, forcing you to use a login account. So, in order to test if their pages are working, I have to use another machine and login.
They also said the reason why the virtual directory "D" worked was because their isapi filter is specifically looking for "A", "B", and "C". Any other name and their isapi filter doesn't pick it up. I suppose they use "A", "B", and "C" in their compiled KnowledgeBase application.
To sum up, it turned out an external application leveraging IIS modified registry entries and I only found the answer after someone from the vendor turned up the answer.
Thank you.