如果使用IIS Express,应该如何启用区分大小写的请求处理?中有设置吗?或者URL重写规则可以实现这一点吗?或者是catch-所有的Handler来做案例检查?
目标是在部署到IIS和S3 (其中S3区分大小写)之前,能够在本地捕获与静态文件有关的情况不一致。
谢谢
发布于 2012-01-24 01:57:21
IIS区分大小写.
...but不适用于文件。
不正确的说法是IIS不区分大小写,不区分大小写的是Windows文件系统.如果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
发布于 2014-06-03 09:58:44
正如凯文·赖斯( Kevin )已经指出的,这与IIS无关。
这与文件系统、文件系统驱动程序和操作系统/ asp.net有关。
Windows 2000+的默认文件系统是NTFS,它不区分大小写.您需要的是区分大小写的文件系统,因此您应该为windows查找区分大小写的文件系统驱动程序。
通常默认的Linux文件系统(称为ext4 2/ext4 3/ext4 4)都是区分大小写的。您可以在这里找到一个windows驱动程序:http://www.ext2fsd.com/
您所需要做的就是将您的应用程序放在该文件系统上,并配置IIS从那里启动应用程序(您可能希望双引导安装Linux,以便在该计算机上确实有一个ext4分区--注意,如果您做错了,您的数据可能会丢失)。
更让我烦恼的是为什么S3文件系统区分大小写.
这是一件非常糟糕的事情,如果有人输入了您的URL,或者搜索引擎降低了它,您将得到一个404.
可以吗?我建议您不要考虑如何使窗口区分大小写,而应该考虑如何使S3变得不区分大小写,这可能是更好的方法。
实际上,我不知道如何在S3上这样做,因为我不知道S3。
然而,我知道的是Linux ( Amazon可能正在使用),所以如果您可以创建自己的文件系统,那么在我的文章S3的底部,您可以找到(注释掉)这样做的方法。
简而言之,您可以创建一个大小为X字节(X = count *块大小)的.dsk文件,用不区分大小写的文件系统(vfat、jsf、hfsplus)格式化它,并将其循环到/mnt/任何东西。
然后将web应用程序放在/mnt/任何位置,并为web应用程序配置根目录。
注意,如果您省略了JFS中的-O,它将区分大小写。
apt-get install jfsutils
dd if=/dev/zero of=jfs.dsk bs=1048576 count=150
mkfs.jfs -O jfs.dsk
mkdir -p /mnt/jfs
mount /volumes/jfs.dsk /mnt/jfs -t jfs -o loop
umount /mnt/jfs/
或类似于hfs-plus (最佳性能,HFS:高性能文件系统)
sudo apt-get install hfsprogs
sudo modprobe hfsplus
sudo dd if=/dev/zero of=hfsplus.dsk bs=1048576 count=150
sudo mkfs.hfsplus /volumes/hfsplus.dsk
sudo mount /volumes/hfsplus.dsk /mnt/hfsplus -t hfsplus -o loop
umount /mnt/hfsplus/
此外,如果您不想(或不能)安装任何东西,通常默认安装vfat:
mkfs -T vfat /volumes/vfat.dsk
此外,红帽衍生的Linux发行版(如S3)不使用apt-get,而是使用rpm/yum。
而且,如果希望永久挂载文件系统,则需要将条目添加到/etc/fstab
中,更详细地介绍如下:https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/4/html/Introduction_To_System_Administration/s2-storage-mount-fstab.html
或者,您可以添加一个启动脚本,在每次重启/引导系统时挂载这个特定的文件系统。
https://stackoverflow.com/questions/5811021
复制相似问题