如果使用IIS Express,我应该如何启用区分大小写的请求处理? IIS Express中有设置吗?或者URL重写规则可以实现此目的吗?或者也许是全能的HTTP Handler进行案例检查?
目标是在部署到IIS和S3(S3区分大小写)之前,能够在本地捕获关于静态文件的大小写不一致.
谢谢
解决方法
IIS区分大小写……
…但不是文件.
IIS不区分大小写是一个误称,Windows文件系统不区分大小写,而不是IIS.如果URL包含文件路径,则IIS会询问Windows文件是否存在且操作系统是否响应而不考虑字母大小写. Windows中的文件名无法“启用”区分大小写.
但对于非真实文件路径,IIS是100%区分大小写的. URL字符的大小写完整地传递给IIS管道.无论是否存在区分大小写,都取决于Web应用程序.但好的做法是说你不希望/ page1与/ PAGE1不同.
ASP.NET对查询字符串变量名称不区分大小写.再次,这不是IIS.应用程序(ASP.NET)不区分大小写.
概要
静态文件路径不区分大小写(由于Windows操作系统,而不是IIS):
http://example.com/sUbdiRectoRy/FILe.aspx
但是,不参与文件路径的URL的部分区分大小写(除了’x’参数之外的所有文件都在file.aspx之后,因为.aspx是ASP.NET资源):
http://example.com/sUbdiRectoRy/FILe.aspx/Extra/Tail?x="query parameter"
如果应用程序区分大小写,则通过重写,HttpModules等动态生成的URL也区分大小写.这通常不是最佳做法,因为这两个URL会引用两个单独的网页:
http://example.com/2012/01/23/blog-article http://example.com/2012/01/23/BLOG-ARTICLE