ASP.NET 4 ограничения URL: почему URL не может содержать %3f символы

http://site.com/page%3fcharacter

Этот URL возвратит следующую ошибку:

Illegal characters in path.

Я уже помещаюсь это в web.config:

<system.web>
<httpRuntime requestValidationMode="2.0" requestPathInvalidCharacters="" />
<pages validateRequest="false"> 
...

Как я могу зафиксировать эту ошибку?

8
задан stacker 14 May 2010 в 00:42
поделиться

3 ответа

Если вы хотите разрешить прохождение запроса, вам нужно добавить requestPathInvalidCharacters и установить для него пустую строку:

<system.web>
    <httpRuntime requestPathInvalidCharacters="" />
</system.web>

Edit Вы должны оставить исходный вопрос на месте, потому что теперь мой ответ не имеет смысла.

Но отвечая на ваш второй вопрос, это потому, что% 3f соответствует '?' что недопустимо в именах файлов в Windows. Вы можете установить для свойства relaxedUrlToFileSystemMapping значение true , чтобы изменить это поведение:

<system.web>
    <httpRuntime requestPathInvalidCharacters=""
                 relaxedUrlToFileSystemMapping="true" />
</system.web>

Вы можете просмотреть все свойства в классе HttpRuntimeSection , чтобы увидеть если есть другие, которые могут быть применимы.

Вы также можете реализовать подкласс RequestValidator и настроить свой web.config для использования вашего подкласса (который предположительно разрешит прохождение всех URL-адресов?). Лично я бы не стал беспокоиться и просто позволил бы встроенным классам справиться с этим. Маловероятно, что обычный пользователь будет каждый раз случайно набирать "% 3f" в пути, и зачем беспокоиться о таких проблемах, чтобы улучшить сценарий использования для злонамеренных пользователей?

Это, кстати, на самом деле это новая функция в ASP.NET 4, поэтому Stack Overflow не выдаёт ошибку: он работает на .NET 3.5.

26
ответ дан 5 December 2019 в 04:46
поделиться

Вероятно, потому что это очень похоже на неправильный URL.

& используется в качестве разделителя для параметров строки запроса, например site.com/page?some=20&another=15

1
ответ дан 5 December 2019 в 04:46
поделиться

Вот хорошая статья Хансельмана, объясняющая все укромные уголки, связанные с вашей проблемой:

Эксперименты в безумие: разрешение процентов, угловых скобок и других непристойных вещей в URL-адресе запроса ASP.NET/IIS

14
ответ дан 5 December 2019 в 04:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: