![IIS6:如何解决 ASP.NET 应用程序中的 404 错误?](https://linux22.com/image/496723/IIS6%EF%BC%9A%E5%A6%82%E4%BD%95%E8%A7%A3%E5%86%B3%20ASP.NET%20%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E4%B8%AD%E7%9A%84%20404%20%E9%94%99%E8%AF%AF%EF%BC%9F.png)
我在 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。嗅探服务器上的整个事务。