首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在IIS Express下启用区分大小写的功能?

如何在IIS Express下启用区分大小写的功能?
EN

Stack Overflow用户
提问于 2011-04-27 21:48:24
回答 2查看 10.7K关注 0票数 8

如果使用IIS Express,应该如何启用区分大小写的请求处理?中有设置吗?或者URL重写规则可以实现这一点吗?或者是catch-所有的Handler来做案例检查?

目标是在部署到IIS和S3 (其中S3区分大小写)之前,能够在本地捕获与静态文件有关的情况不一致。

谢谢

EN

回答 2

Stack Overflow用户

发布于 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):

代码语言:javascript
运行
复制
http://example.com/sUbdiRectoRy/FILe.aspx

但是,不参与文件路径的URL的部分是区分大小写的(除了'x‘参数之外,下面的所有内容都是file.aspx之后的内容,因为.aspx是ASP.NET资源):

代码语言:javascript
运行
复制
http://example.com/sUbdiRectoRy/FILe.aspx/Extra/Tail?x="query parameter"

如果应用程序区分大小写,则由重写、HttpModules等动态生成的URL也是区分大小写的.这通常不是最佳做法,因为这两个URL指的是两个单独的网页:

代码语言:javascript
运行
复制
http://example.com/2012/01/23/blog-article
http://example.com/2012/01/23/BLOG-ARTICLE
票数 17
EN

Stack Overflow用户

发布于 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,它将区分大小写。

代码语言:javascript
运行
复制
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:高性能文件系统)

代码语言:javascript
运行
复制
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:

代码语言:javascript
运行
复制
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

或者,您可以添加一个启动脚本,在每次重启/引导系统时挂载这个特定的文件系统。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5811021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档