我正在运行 IIS 7,当我尝试从公共文件夹下载文件时,服务器返回错误 500。然而,这只发生在第一个请求如果我再次尝试,下载将按预期进行。如果我等待一段时间,问题再次出现。
这似乎与会话处理有关?
错误 500 与应用程序无关吗?这看起来很奇怪,因为这只是一个简单的文件请求?
编辑:我应该提到,如果它有某种相关性的话,我正在使用 https。
答案1
为了获得更多详细信息,我建议您启用“失败请求跟踪规则”
首先,转到“编辑站点跟踪”并将其选中为“已启用”,记下跟踪文件的位置,在该位置内,您将找到一个带有站点 ID 的目录。
- 转到 IIS 管理器 -> 站点 -> 您的站点。
- 双击“失败请求跟踪规则”。
- 在操作(右侧)中选择“添加...”
- 选择“所有内容 (*)”
- 选择“v”作为状态代码并输入“400-599”(将涵盖错误范围,包括未找到文件),单击下一步
- 选择所有提供商并继续完成。
第一次请求后,在服务器上,转到跟踪文件的位置,然后在 Internet Explorer 中打开它。
我希望这能帮助您找到故障模块,或者问题的真正所在。
如果您还有什么需要,请告诉我,伊丹。
答案2
事件查看器中有什么线索吗?检查 IIS 日志以获取 500 错误子状态怎么样?这可以揭示很多有关原因的有用信息。
它听起来确实与会话或身份验证有关,但奇怪的是它在刷新后就能起作用。
答案3
这发生在我们需要 Windows 身份验证的文件夹中(它包含敏感数据)。文件系统文件夹也受到保护,因此只有一小部分用户有读取权限。
问题发生的原因是 IIS 尝试web.config
使用普通 IIS 帐户读取该文件夹上的文件,但由于此帐户没有该文件夹的读取权限,因此在第一次访问时会失败并返回 HTTP 500 错误。如果您再次重新加载 URL,它会正常工作,直到 IIS 决定由于不活动而关闭默认应用程序池。
解决方案是授予IIS_IUSRS
该文件夹的组“列出文件夹内容”权限。