После поиска большего количества комбинаций IIS и плюс, кажется, что IIS7[.5] настраивается для отклонения URL со знаком "плюс" по умолчанию из некоторого страха перед использованием того символа; тот символ все еще позволяется в querystring, все же. Решение состоит в том, чтобы изменить значение по умолчанию атрибута requestFiltering на <system><webServer><security><requestFiltering>
позволить вдвойне закодированные символы с вызовом командной строки (в конечном счете изменяющий Ваш ASP.NET web.config):
%windir%\system32\inetsrv\appcmd set config "Default Web Site" -section:system.webServer/security/requestFiltering -allowDoubleEscaping:true
Это может быть немного более опасно, чем каждый предпочитает быть с их веб-сайтом, но там, казалось, не был способом быть более конкретным, чем слой позволяет. Предупреждения расценивали несоответствие, которое могло произойти между использованием плюс в URL и его типичным переводом как пространство. Похоже, что единственная другая альтернатива должна прекратить использовать плюс символы в Ваших URL вообще.
Я просто выяснил, как сделать переписать правило убедить IIS7 отображать плюсы на пробелы в URL. В моем случае это должно было сохранить работу закладок или гиперссылок прежней версии.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<security>
<requestFiltering allowDoubleEscaping="True" />
</security>
<rewrite>
<rules>
<rule name="RewriteUserFriendlyURL1" stopProcessing="false">
<match url="\+" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="{UrlDecode:{REQUEST_URI}}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Посмотрите мое сообщение в блоге для получения дальнейшей информации и ссылки.