Я + (приблизительно 18 символов) + N = безопасный InternationalizatioN
I18N означает, что шаги были сделаны во время проектирования и разработки, которое упростит Локализацию (L10N) позже.
Edit: Добавлен акцент на соответствующие разделы.
В основном: IIS чрезмерно параноик. Вы можете безопасно отключить эту проверку, если вы re не делать ничего особенно неразумного с данными, декодированными uri (например, генерировать URI локальной файловой системы посредством конкатенации строк).
Чтобы отключить проверку, выполните следующие действия (из здесь ): (см. мой комментарий ниже для что влечет за собой двойное экранирование).
<system.webServer>
<security>
<requestFiltering allowDoubleEscaping="true"/>
</security>
</system.webServer>
Если символ плюса является допустимым символом во вводе поиска, вам потребуется , чтобы включить «allowDoubleEscaping», чтобы разрешить IIS обрабатывать такой ввод из пути URI.
Наконец, очень простой, хотя и ограниченный обходной путь - просто избежать «+» и использовать вместо него «% 20». В любом случае использование символа «+» для кодирования пробела является не допустимым кодированием URL , но специфичным для ограниченного набора протоколов и, вероятно, широко поддерживается по причинам обратной совместимости. Если только в целях канонизации, в любом случае лучше кодировать пробелы как "% 20"; и это позволяет обойти проблему IIS7 (которая все еще может возникать для других последовательностей, таких как% 25ab.)
Думали ли вы о том, что URL-адрес поиска будет выглядеть как '/ search / a / b / c'?
Вам нужно будет настроить маршрут, например,
search/{*path}
А затем извлеките значения поиска из строки пути в действии.
HTHs
Чарльз