IIS cannot access files in OneFS virtual directory – 404 error

iis

I have an IIS server with a virtual directory called "test" pointing at a share on an Isilon OneFS server (\\192.168.X.X\test) using the SMB protocol. I've configured the DefaultAppPool to run as a special user I created that has access to the share.

When I browse to the virtual directory (http://localhost/test), I get a directory listing, and it lists all of the files in that directory as expected. However, if I browse to an actual file (http://localhost/test/file.txt), I get a 404 error from IIS. The same happens if I try to browse to a subdirectory.

I've verified that I can access the files just fine from Windows Explorer. I can remote into the IIS server, open Windows Explorer, go to \\192.168.X.X\test, and open files just fine. Why does IIS give me a 404 error, then?

EDIT: I created a mapped drive to \\192.168.X.X\test that connects using the same user as IIS, and I can open files from the mapped drive just fine.

I also checked to make sure the necessary MIME types are defined in IIS.

Best Answer

It turns out that the real problem is to do with case sensitivity: OneFS (being a linux-based OS) is case-sensitive, and Windows is not.

IIS7, in its great wisdom, converts the requested file name to ALL UPPERCASE before sending the request to OneFS. As such, OneFS tells IIS that the file does not exist, and IIS returns a 404 error.

The solution is to change the names of all files and folders in the share to be all uppercase.

As this is a bit of a pain, if anyone knows how to convince IIS to send the file name as-is (without capitalizing it), please post another answer.

EDIT: Our OneFS server was using a character encoding that was NOT UTF-8. According to OneFS documentation, it should be case-insensitive as long as your character encoding is set to UTF-8. However, we cannot use UTF-8, so I cannot verify that that works.

Relevant OneFS documentation:

You can modify the character encoding set for the EMC Isilon cluster after installation

Only OneFS-supported character sets are available for selection. UTF-8 is the default character set for OneFS nodes.

NOTE: If the cluster character encoding is not set to UTF-8, SMB share names are case sensitive.

You must restart the cluster to apply character encoding changes.

CAUTION: Character encoding is typically established during installation of the cluster. Modifying the character encoding setting after installation may render files unreadable if done incorrectly. Modify settings only if necessary after consultation with Isilon Technical Support.