Как включить чувствительность к регистру в IIS Express?

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

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

Спасибо


person DuckMaestro    schedule 27.04.2011    source источник


Ответы (2)


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-адреса, которые динамически создаются путем перезаписи, HttpModules и т. Д., Также чувствительны к регистру, если приложение чувствительно к регистру. Обычно это не лучшая практика, поскольку эти два URL-адреса относятся к двум отдельным веб-страницам:

http://example.com/2012/01/23/blog-article
http://example.com/2012/01/23/BLOG-ARTICLE
person Kevin P. Rice    schedule 24.01.2012

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

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

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

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

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

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

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

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

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

Обратите внимание, что если вы опустите -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

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

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

person Stefan Steiger    schedule 03.06.2014
comment
TomCat тоже так себя ведет, он чувствителен к регистру. Хотя он работает в Windows. Вы уверены, что нет возможности включить в IIS чувствительность к регистру? - person erotavlas; 27.02.2017
comment
@erotavlas: Как сказал Кевин, IIS чувствителен к регистру. Вы хотите включить чувствительность к регистру в Windows. Если я правильно помню, Windows имеет (или имела) параметр реестра (для служб Windows для Unix - совместимость с Linux), с помощью которого вы могли включать и выключать чувствительность к регистру Windows (то есть ее файловую систему). Но вы можете сами погуглить. - person Stefan Steiger; 28.02.2017