首次请求文件时出现 500 错误

首次请求文件时出现 500 错误

我正在运行 IIS 7,当我尝试从公共文件夹下载文件时,服务器返回错误 500。然而,这只发生在第一个请求如果我再次尝试,下载将按预期进行。如果我等待一段时间,问题再次出现。

这似乎与会话处理有关?

错误 500 与应用程序无关吗?这看起来很奇怪,因为这只是一个简单的文件请求?

编辑:我应该提到,如果它有某种相关性的话,我正在使用 https。

答案1

为了获得更多详细信息,我建议您启用“失败请求跟踪规则”

首先,转到“编辑站点跟踪”并将其选中为“已启用”,记下跟踪文件的位置,在该位置内,您将找到一个带有站点 ID 的目录。

  1. 转到 IIS 管理器 -> 站点 -> 您的站点。
  2. 双击“失败请求跟踪规则”。
  3. 在操作(右侧)中选择“添加...”
  4. 选择“所有内容 (*)”
  5. 选择“v”作为状态代码并输入“400-599”(将涵盖错误范围,包括未找到文件),单击下一步
  6. 选择所有提供商并继续完成。

第一次请求后,在服务器上,转到跟踪文件的位置,然后在 Internet Explorer 中打开它。

我希望这能帮助您找到故障模块,或者问题的真正所在。

如果您还有什么需要,请告诉我,伊丹。

答案2

事件查看器中有什么线索吗?检查 IIS 日志以获取 500 错误子状态怎么样?这可以揭示很多有关原因的有用信息。

它听起来确实与会话或身份验证有关,但奇怪的是它在刷新后就能起作用。

答案3

这发生在我们需要 Windows 身份验证的文件夹中(它包含敏感数据)。文件系统文件夹也受到保护,因此只有一小部分用户有读取权限

问题发生的原因是 IIS 尝试web.config使用普通 IIS 帐户读取该文件夹上的文件,但由于此帐户没有该文件夹的读取权限,因此在第一次访问时会失败并返回 HTTP 500 错误。如果您再次重新加载 URL,它会正常工作,直到 IIS 决定由于不活动而关闭默认应用程序池。

解决方案是授予IIS_IUSRS该文件夹的组“列出文件夹内容”权限。

相关内容