IIS is case-sensitive...
...but not for files.
It is a misnomer that IIS is case-insensitive, it is the Windows file system that is case-insensitive, not IIS. If a URL contains a file path then IIS asks Windows if the file exists and the OS responds without regard to letter case. There is no way to "enable" case sensitivity for file names in Windows.
But for other than real file paths, IIS is 100% case-sensitive. The case of URL characters is passed to the IIS pipeline intact. It is up to the web application whether or not case-sensitivity exists. But good practice says you don't want /page1
to be different than /PAGE1
.
ASP.NET is case-insensitive to query string variable names. AGAIN, this is not IIS. It is the application (ASP.NET) that is case-insensitive.
Summary
Static file paths are not case-sensitive (due to Windows OS, not IIS):
http://example.com/sUbdiRectoRy/FILe.aspx
HOWEVER, portions of the URL not participating in the file path are case-sensitive (everything after file.aspx
below except for the 'x' parameter because .aspx is an ASP.NET resource):
http://example.com/sUbdiRectoRy/FILe.aspx/Extra/Tail?x="query parameter"
URLs that are dynamically generated by re-writes, HttpModules, etc. are also case-sensitive if the application is case-sensitive. This is usually not best practice as these two URLs would refer to two separate web pages:
http://example.com/2012/01/23/blog-article
http://example.com/2012/01/23/BLOG-ARTICLE
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…