IIS6:如何解决 ASP.NET 应用程序中的 404 错误?

IIS6:如何解决 ASP.NET 应用程序中的 404 错误?

我在 Windows Server 2003/IIS6 上有一个 ASP.NET 应用程序,由于某种原因(如果这些信息有帮助的话,是 Xerox Centre 的原因)拒绝运行。但它之前在此服务器上运行正常。

现在,如果我尝试打开应用程序主页(http://some.intranet.server/XeroxCentreWareWeb/),我得到的只是“404 - 未找到文件或目录”错误。

  • 该应用程序配置为在其自己的应用程序池中运行,该应用程序池作为网络服务运行。
  • 网络服务帐户具有对配置的目录的读取权限。
  • 如果我停止应用程序池,我会收到预期的“服务不可用”消息,这意味着应用程序及其池连接正确
  • 我尝试使用 procmon 来追踪文件权限问题 - 什么也没发现。页面加载时甚至没有访问 Web 应用目录。
  • 有趣的是,根据 procmon,Web 服务器首先访问 401-2 自定义错误文件(由于服务器配置导致登录失败),但随后决定将 404 发送给客户端。
  • 编辑:该应用使用 Windows 集成身份验证运行。普通用户也可以访问应用目录(如果有的话,我会注意到 procmon 中的文件系统“访问被拒绝”消息。

这让我觉得在访问应用程序文件之前就出现了某种奇怪的权限问题。我只是不知道去哪里查找。

我尝试以本地系统身份运行应用程序池进行测试,但无济于事。

在这种情况下我还可以检查什么?

答案1

首先,我喜欢你采取的故障排除步骤。另一个“中断”测试是停止网站本身,而不仅仅是应用程序池,以确保不是另一个网站在处理它,而是共享应用程序池。

IIS6 在 IIS 管理器中有“Web 服务扩展”部分。请确保您使用的框架版本是允许的。如果您最近将框架版本更改为未标记为允许的版本,则会引发 404 错误。

IIS 日志还将为您确认子状态代码,并确认正确的站点已连接。

答案2

我发现的答案很简单,但并不明显。

仍有一个“通配符应用程序映射”定义到不再存在的应用程序服务器(在本例中为 ColdFusion)。ColdFusion 卸载程序显然“忘记”从 MetaBase 中删除该设置。

通配符应用程序映射定义如下:

  • 在 IIS 管理器中,打开应用程序属性对话框
  • 在“虚拟目录”选项卡上,查看“应用程序设置”部分
  • 点击“配置…”
  • “应用程序配置”对话框打开
  • 它就在“映射”选项卡上

答案3

检查 IIS 日志。我无法从您的问题中看出您是否已经这样做了。

404 表示页面未找到,因此我会在查看凭证之前先查看路径问题。

答案4

下降一级,安装Wireshark。嗅探服务器上的整个事务。

相关内容