我有一个名为“test”的虚拟目录的IIS服务器,使用SMB协议指向Isilon OneFS服务器上的共享(\\ 192.168.XX \ test)。 我已经configurationDefaultAppPool作为我创build的可以访问共享的特殊用户来运行。
当我浏览到虚拟目录( http:// localhost / test )时,我得到一个目录列表,并按预期列出了该目录中的所有文件。 但是,如果我浏览到一个实际的文件( http://localhost/test/file.txt ),我得到一个404错误从IIS。 如果我尝试浏览到一个子目录,也会发生同样的情况。
我已经validation了我可以从Windows资源pipe理器访问文件。 我可以远程进入IIS服务器,打开Windows资源pipe理器,进入\\ 192.168.XX \ test,并打开文件就好了。 为什么IIS给我一个404错误呢?
编辑:我创build了映射的驱动器\\ 192.168.XX \testing连接使用相同的用户作为IIS,我可以从映射的驱动器打开文件就好了。
我也检查,以确保必要的MIMEtypes在IIS中定义。
事实certificate,真正的问题是区分大小写:OneFS(作为基于Linux的操作系统)区分大小写,Windows不是。
IIS7以其卓越的智慧,在将请求发送到OneFS之前,将请求的文件名转换为ALL UPPERCASE。 因此,OneFS告诉IIS该文件不存在,并且IIS返回一个404错误。
解决scheme是将共享中的所有文件和文件夹的名称全部改为大写。
由于这有点痛苦,如果有人知道如何说服IIS发送文件名(不用大写),请发表另一个答案。
编辑:我们的OneFS服务器正在使用不是UTF-8的字符编码。 根据OneFS文档,只要您的字符编码设置为UTF-8,它应该不区分大小写。 但是,我们不能使用UTF-8,所以我无法validation这是有效的。
相关的OneFS文档:
您可以在安装后修改为EMC Isilon群集设置的字符编码
只有OneFS支持的字符集可供select。 UTF-8是OneFS节点的默认字符集。
注:如果群集字符编码未设置为UTF-8,则SMB共享名称区分大小写。
您必须重新启动群集才能应用字符编码更改。
小心:字符编码通常在安装群集期间build立。 安装后修改字符编码设置可能会导致文件无法读取,如果不正确。 在咨询Isilon技术支持后,必要时修改设置。