IIS6 по сравнению с IIS7 и IIS7.5: обработка URL со знаком "плюс" (+) в основе (не querystring)

Это интересно.

Это помогает?

http://forums.techarena.in/small-business-server/844637.htm#post3288398

39
задан 29 July 2011 в 17:58
2 ответа

После поиска большего количества комбинаций 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 вообще.

40
ответ дан 28 November 2019 в 19:46

Я просто выяснил, как сделать переписать правило убедить 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>

Посмотрите мое сообщение в блоге для получения дальнейшей информации и ссылки.

9
ответ дан 28 November 2019 в 19:46

Теги

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