我在 Windows Server 2003/IIS6 上有一个 ASP.NET 应用程序,由于某种原因拒绝运行(它是施乐中心,如果该信息有帮助的话)。尽管在此服务器上,它之前一直在完美运行。
现在,如果我尝试打开应用程序主页 ( http://some.intranet.server/XeroxCentreWareWeb/
),我得到的只是“404 - 找不到文件或目录”错误。
- 该应用程序配置为在其自己的应用程序池中运行,该应用程序池作为网络服务运行。
- 网络服务帐户对配置的目录具有读取权限。
- 如果我停止应用程序池,我会收到预期的“服务不可用”消息,这意味着应用程序及其池已正确连接
- 我试图用 procmon 追踪任何文件权限问题 - 什么都看不到。页面加载时甚至无法访问 Web 应用程序目录。
- 有趣的是,根据 procmon,Web 服务器首先访问 401-2 自定义错误文件(由于服务器配置而登录失败),但随后决定将 404 发送到客户端。
- 编辑:该应用程序使用 Windows 集成身份验证运行。普通用户也可以访问应用程序目录(如果有的话,我会注意到 procmon 中的文件系统“ACCESS DENIED”消息。)
这让我觉得甚至在访问应用程序文件之前就发生了某种奇怪的权限问题。我只是不知道在哪里看。
我尝试将应用程序池作为本地系统运行以进行测试,但无济于事。
在这种情况下我还能检查什么?
首先,我喜欢您采取的故障排除步骤。另一个“中断”测试是停止站点本身,而不仅仅是应用程序池,以确保它不是另一个处理它的站点,而是共享应用程序池。
IIS6 在 IIS 管理器中有“Web 服务扩展”部分。确保您使用的框架版本是允许的。如果您最近将框架版本更改为未标记为允许的版本,则会引发 404 错误。
IIS 日志还将为您确认子状态代码,它还将确认正确的站点已连接。
我找到的答案很简单,不明显。
仍然有一个“通配符应用程序映射”定义到不再存在的应用程序服务器(在本例中为 ColdFusion)。ColdFusion 卸载程序显然“忘记”了从 MetaBase 中删除该设置。
通配符应用程序映射在此处定义:
检查 IIS 日志。如果您已经这样做了,我看不到您的问题。
404 是找不到页面,所以我会在凭据之前查看路径问题。
冒着指出显而易见的风险... default.aspx 是否仍在该站点/虚拟目录的默认文档列表中?
下拉一层,然后安装 Wireshark。嗅探服务器上的整个事务。
正如其他人所说,使用 Wireshark 或其他数据包捕获程序来分析客户端和服务器之间的流量。这将允许您查看客户端发送到服务器的确切请求以及来自服务器的响应。我发现当我因网络问题而头疼时,运行数据包捕获通常会照亮我错过或忽略的一些东西。
asp.net / 应用程序池问题通常写入事件日志,因此这是我在进行任何流量分析之前首先要检查的地方。
有几个应用程序可以直接在浏览器中查看 HTTP 标头。
ieHTTPHeaders适用于 Internet Explorer。如果您使用 Firefox,则可以搜索 Live HTTP Headers。(我没有足够的代表来发布第二个链接)。
应用程序的物理路径是什么?它是配置为虚拟目录还是实际上位于 wwwroot 中?您可以通过 IIS 管理器浏览内容吗?
更改 Web 服务扩展以允许为我修复 404 问题。我相信这些值在我们的一个补丁周期中发生了变化。
您可以尝试安装 Fiddler 并使用 IE8 开发人员工具运行它,以查看您是否被重定向或其他什么。