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

我有一个Windows Server 2003 / IIS6上的ASP.NET应用程序拒绝运行的原因(这是施乐中心,如果信息帮助)。 尽pipe在这台服务器上它一直在完美地工作。

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

  • 该应用程序被configuration为在它自己的应用程序池中运行,该应用程序池作为networking服务运行。
  • networking服务帐户具有对已configuration目录的读取权限
  • 如果我停止应用程序池,则会收到预期的“Service Unavailable”消息,表示应用程序及其池已正确连线
  • 我试图跟踪procmon的任何文件权限问题 – 什么都看不到。 加载页面时甚至无法访问Web应用程序目录。
  • 有趣的是,根据procmon,Web服务器首先访问401-2定制错误文件(由于服务器configurationlogin失败),但决定发送404到客户端。
  • 编辑:应用程序与Windows集成身份validation运行。 普通用户也可以访问应用程序目录( 如果有的话,我会注意到procmon中的文件系统“ACCESS DENIED”消息 )。

这让我觉得即使在应用程序文件被访问之前,也会出现一些奇怪的权限问题。 我只是不知道在哪里看。

我试图运行应用程序池作为本地系统进行testing,但无济于事。

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

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

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

IIS日志还会为您确认子状态码,同时也会确认正确的站点已经连线。

我发现的答案非常简单。

还有一个“通配符应用程序映射”被定义为一个不存在的应用程序服务器(在这种情况下是ColdFusion)。 ColdFusion卸载程序显然“忘记”从MetaBase中删除该设置。

通配符应用程序映射在这里定义:

  • 在IISpipe理器中,打开应用程序属性对话框
  • 在“虚拟目录”选项卡上,查看“应用程序设置”部分
  • 点击“configuration…”
  • “应用程序configuration”对话框打开
  • 在“Mappings”选项卡上

检查IIS日志。 如果你已经这样做了,我看不出你的问题。

404没有find页面,所以我会查看证书之前的path问题。

冒着指出明显的风险…是default.aspx仍然在该网站/虚拟目录的默认文件列表?

下拉一级,然后安装Wireshark。 在服务器上嗅探整个事务。

像其他人一样,使用Wireshark或其他数据包捕获程序来分析客户端和服务器之间的stream量。 这将允许您查看客户端发送到服务器的确切请求以及服务器的响应。 我发现,当我在networking问题上敲打我的头时,运行数据包捕获常常会照亮我错过或忽略的一些东西。

asp.net /应用程序池问题通常写入事件日志,所以这将是我做任何stream量分析之前检查的第一位。

在浏览器中有几个应用程序可以查看HTTP标题。

ieHTTPHeaders适用于Internet Explorer。 如果您使用Firefox,则可以searchLive HTTP Headers。 (我没有足够的代表发布第二个链接)。

什么是应用程序的物理path? 它configuration为虚拟目录还是实际在wwwroot? 你可以通过IISpipe理器浏览内容吗?

更改Web服务扩展,以便为我解决404问题。 我相信这些值在我们的一个修补周期中发生了变化。

您可以尝试安装Fiddler并使用IE8开发人员工具运行它,以查看您是否被redirect或什么。