我们有一个网站,以前在 Windows 2003 服务器上运行,该服务器安装了任何版本的 IIS;我认为是 IIS6。该网站已移至新服务器,即安装了 IIS7 的 Windows 7 服务器。自移动以来,我们的网站一直出现错误:
Access to the path 'someFile.ext' is denied.
当网站尝试删除文件时发生错误(该网站具有上传功能并删除旧文件)。有人知道是什么原因造成的吗?
额外的信息:
- 当我远程桌面连接到服务器并尝试删除文件时,我收到一个 Windows 提示,提示我需要提供管理员权限才能执行此操作。
- 部分文件可能是由账户已被禁用的用户创建的
- 这些问题早于此次更改,但该网站最近已更新为使用 asp.net v4 的应用程序池
- 如果我访问该网站并上传文件,那么我可以毫无问题地删除该特定文件。
- 服务器是vmware机器。
- 当我尝试上传与无法删除的文件同名的文件时,出现 401 错误。
如果有人以前遇到过此问题或者知道我们可以找到问题原因的方法,我将不胜感激。
答案1
这几乎肯定是文件系统权限问题,特别是如果您没有使用 Active Directory 管理该服务器。当您从旧服务器复制文件时,创建它们的用户(其 SID)在技术上仍然是它们的所有者。检查文件的 NTFS 权限,并确保您用于 IIS 的用户/帐户对它们具有删除权限。要调试(完成后删除此权限!),请授予“Everyone”对这些文件的完全控制权,并确保它们由该服务器上的本地管理员帐户或该服务器上的 SYSTEM 拥有。
UAC 提示也是由于权限分配不正确而导致的。它会提示您暂时拥有某个文件的所有权并更改其权限,以便您可以删除它。
答案2
我猜你可能使用 robocip 复制了文件并手动设置了权限。有时这种方法有效,但大多数情况下会导致奇怪的问题。我建议使用 webdeploy 并重新迁移网站,而不是复制文件。
另一个可能的原因是 isapi 过滤器存在兼容性问题。
编辑:
如果您选择不修复网站,您可以使用 procmon 监视文件访问并应用适当的权限来调试可能的权限。