Как включить чувствительность к регистру в IIS Express? - PullRequest
4 голосов
/ 28 апреля 2011

Как мне разрешить обработку запроса с учетом регистра при использовании IIS Express?Есть ли настройка в IIS Express?или может ли правило перезаписи URL выполнить это?или, возможно, универсальный обработчик HTTP для проверки регистра?

Цель состоит в том, чтобы иметь возможность локально отследить несоответствия регистра в отношении статических файлов перед развертыванием как в IIS, так и в S3 (где S3 чувствителен к регистру).

Спасибо

Ответы [ 2 ]

12 голосов
/ 24 января 2012

IIS с учетом регистра ...

... но не для файлов.

Ошибочно, что IIS нечувствителен к регистру, файловая система Windows нечувствительна к регистру, а не IIS. Если URL-адрес содержит путь к файлу, IIS спрашивает Windows, существует ли файл, и ОС отвечает без учета регистра букв. В Windows нет возможности «включить» чувствительность к регистру имен файлов.

Но для других, чем реальных путей к файлам, IIS чувствителен к регистру на 100%. Регистр символов URL передается в конвейер IIS без изменений. Это зависит от веб-приложения, существует ли чувствительность к регистру. Но хорошая практика говорит, что вы не хотите, чтобы /page1 отличался от /PAGE1.

В ASP.NET регистр символов не учитывается. СНОВА, это не IIS. Это приложение (ASP.NET) без учета регистра.

Резюме

Статические пути к файлам не чувствительны к регистру (из-за ОС Windows, а не IIS):

http://example.com/sUbdiRectoRy/FILe.aspx

ОДНАКО, части URL, не участвующие в пути к файлу , чувствительны к регистру (все, что находится ниже file.aspx, за исключением параметра 'x', потому что .aspx является ресурсом ASP.NET):

http://example.com/sUbdiRectoRy/FILe.aspx/Extra/Tail?x="query parameter"

URL-адреса, которые динамически генерируются перезаписью, модулями Http и т. Д., Также чувствительны к регистру, если приложение чувствительно к регистру. Обычно это не лучшая практика, поскольку эти два URL-адреса относятся к двум отдельным веб-страницам:

http://example.com/2012/01/23/blog-article
http://example.com/2012/01/23/BLOG-ARTICLE
0 голосов
/ 03 июня 2014

Как уже указывал Кевин Райс, это не имеет ничего общего с IIS.
Это все о файловой системе, драйвере файловой системы и операционной системе / asp.net.

Файловой системой по умолчанию для Windows 2000+ является NTFS, которая не учитывает регистр. Что вам нужно, так это файловая система с учетом регистра, поэтому вам следует искать драйвер файловой системы для Windows с учетом регистра.

Обычные файловые системы Linux по умолчанию (называемые ext2 / ext3 / ext4) чувствительны к регистру. И вы можете найти драйвер для них здесь: http://www.ext2fsd.com/

Все, что вам нужно сделать, это поместить ваше приложение в эту файловую систему и настроить IIS для запуска приложения оттуда (вам может понадобиться установить Linux с двойной загрузкой, чтобы у вас действительно был раздел ext4 на этом компьютере - будьте осторожны, если вы сделаете это неправильно, ваши данные могут быть Унесены).

Больше всего меня беспокоит, почему файловая система S3 чувствительна к регистру.
Это очень плохо, если кто-то неправильно наберет ваш URL, или если поисковая система его снизит, вы получите 404 ...

Позвольте мне предложить вместо того, чтобы посмотреть, как вы можете сделать так, чтобы окна были чувствительными к регистру, вы посмотрите, как вы можете сделать так, чтобы S3 стал нечувствительным к регистру, это, вероятно, лучший подход.

На самом деле я не знаю, как это сделать на S3, поскольку я не знаю S3.
Однако я знаю, что это Linux (который, вероятно, использует Amazon S3), поэтому, если вы можете создать свою собственную файловую систему, в нижней части моего поста здесь вы найдете (закомментированные) способы сделать это.

В двух словах, вы создаете файл .dsk требуемого размера X байтов (X = count * blocksize) отформатируйте его без учета регистра файловой системы (vfat, jsf, hfsplus) и подключите его к / mnt / что угодно.

Затем вы помещаете ваше веб-приложение в / mnt / what и настраиваете корневой каталог для веб-приложения.

Обратите внимание, что если вы опустите опцию -O в JFS, она будет чувствительна к регистру.

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

Кроме того, производные от Red-Hat дистрибутивы 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

или вы можете добавить сценарий запуска, который монтирует данную файловую систему при каждом перезапуске / загрузке системы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...