Windows Server 2003 上的 IIS 6.0:虚拟目录上的 HTTP 404 错误;系统找不到指定的文件(win32 状态代码 2)

Windows Server 2003 上的 IIS 6.0:虚拟目录上的 HTTP 404 错误;系统找不到指定的文件(win32 状态代码 2)

非常奇怪的问题。我运行的是 Windows Server 2003,带有 IIS 6.0。在其中一个网站中,有三个虚拟目录:A、B 和 C。无论出于什么原因,而且据我所知,没有人碰过这个框,A 和 C 都出现了严重问题。这些虚拟目录中的任何页面,无论是通过 IIS 还是外部客户端浏览,都会显示未找到页面。我在日志文件中查找了错误。这是一个 404.0 HTTP 错误,Windows 状态错误 2。因此,未找到页面,系统找不到指定的文件。

文件就在那里,每一个。

作为测试,我创建了一个名为“D”(不带引号)的新虚拟目录,指向与虚拟目录“C”相同的目录,果然,它起作用了。为什么 C 不起作用而 D 起作用,但它们都指向同一个物理目录?

作为另一项测试,我删除了虚拟目录“C”并重新创建了它。结果怎么样?该虚拟目录中的任何文件都找不到该页面。

我检查了 IIS 的 XML 文件并且它们看起来没有问题。

一定是某些注册表项或 IIS 的某些依赖项已损坏或丢失,从而导致了问题。

我将非常感谢您的建议。

谢谢。

答案1

答案似乎是 IIS 之外的程序,由名为 KnowledeBase 的程序提供,该程序利用了 IIS。某个程序或某个人运行了他们的管理或注册程序,从而更改了注册表项中的一两个。他们的注册表项包括存储数据文件驱动器号的参数,运行此程序会删除或重置这些条目。我是在与此 KnowledgeBase 程序的供应商取得联系后才知道这一点的。不仅如此,我无法从 IIS 浏览文件。供应商有一个 isapi 过滤器,可以阻止此请求并强制您从客户端登录才能访问页面。他们声称这是出于安全原因,强制您使用登录帐户。因此,为了测试他们的页面是否正常工作,我必须使用另一台机器并登录。

他们还说虚拟目录“D”之所以有效,是因为他们的 isapi 过滤器专门寻找“A”、“B”和“C”。任何其他名称,他们的 isapi 过滤器都不会选择它。我猜他们在编译的 KnowledgeBase 应用程序中使用了“A”、“B”和“C”。

总而言之,结果是一个利用 IIS 修改注册表项的外部应用程序,只有在供应商的某个人找到答案后我才找到了答案。

谢谢。

相关内容