IIS 无法访问 OneFS 虚拟目录中的文件 - 404 错误

IIS 无法访问 OneFS 虚拟目录中的文件 - 404 错误

我有一台 IIS 服务器,其中有一个名为“test”的虚拟目录,使用 SMB 协议指向 Isilon OneFS 服务器 (\\192.168.XX\test) 上的共享。我已将 DefaultAppPool 配置为以我创建的具有该共享访问权限的特殊用户身份运行。

当我浏览到虚拟目录(http://localhost/测试),我得到了一个目录列表,并且它按照预期列出了该目录中的所有文件。然而,如果我浏览到实际文件(http://localhost/test/file.txt),我收到来自 IIS 的 404 错误。如果我尝试浏览子目录,也会发生同样的情况。

我已经验证我可以从 Windows 资源管理器正常访问文件。我可以远程访问 IIS 服务器,打开 Windows 资源管理器,转到 \\192.168.XX\test,然后正常打开文件。那么,为什么 IIS 会给我 404 错误呢?

编辑:我创建了一个映射到 \\192.168.XX\test 的驱动器,该驱动器使用与 IIS 相同的用户进行连接,并且我可以从映射驱动器正常打开文件。

我还检查了确保在 IIS 中定义了必要的 MIME 类型。

答案1

事实证明,真正的问题与大小写有关:OneFS(基于 Linux 的操作系统)区分大小写,而 Windows 不区分大小写。

IIS7 非常聪明,在将请求发送给 OneFS 之前,会将请求的文件名转换为全部大写。因此,OneFS 会告诉 IIS 该文件不存在,IIS 将返回 404 错误。

解决方案是将共享中的所有文件和文件夹的名称全部改为大写。

由于这有点麻烦,如果有人知道如何说服 IIS 按原样发送文件名(不大写),请发表另一个答案。

编辑:我们的 OneFS 服务器使用的字符编码不是 UTF-8。根据 OneFS 文档,只要您的字符编码设置为 UTF-8,它就应该不区分大小写。但是,我们不能使用 UTF-8,所以我无法验证它是否有效。

相关 OneFS 文档:

安装后,您可以修改 EMC Isilon 群集的字符编码集

仅可选择 OneFS 支持的字符集。UTF-8 是 OneFS 节点的默认字符集。

注意:如果集群字符编码未设置为 UTF-8,则 SMB 共享名称区分大小写。

您必须重新启动集群才能应用字符编码更改。

警告:字符编码通常在安装群集期间建立。如果操作不当,安装后修改字符编码设置可能会导致文件无法读取。仅在必要时咨询 Isilon 技术支持后修改设置。

相关内容