Не удается найти папку или файл Windows Server 2008 IIS 7.5 с +

Моя проблема в том, что на сервере есть сайт: - Windows server 2008 - IIS 7.5

и есть папка с некоторыми файлами изображений.

Имя папки и файла выглядит так:

www.somedomain.com/images/picture+pro/myimage.gif

также

www.somedomain.com/images/picture/myimage+pro.gif

имеет ту же проблему.

Проблема в том; специальный символ «+» не может быть прочитан на сервере Windows 2008 с IIS 7.5, но он был прочитан, когда я разрабатывал локально с помощью Visual Studio 2010 на компьютере с Windows 7.

Есть ли какая-то конфигурация, которую я могу сделать в Windows 2008 или IIS 7.5, чтобы разрешить чтение папок и/или файлов, содержащих символ «+»?

Большое Вам спасибо


person E-A    schedule 30.04.2012    source источник
comment
это +.. не %2B.. Папка на сервере использует + Так же в html img src тоже использует + не %2B   -  person E-A    schedule 30.04.2012
comment
Тогда почему вы ожидаете, что это сработает? См. Зарезервированные символы.   -  person ta.speot.is    schedule 30.04.2012
comment
Потому что, как я уже упоминал в своем вопросе; Он работает так, как сейчас, когда я запускаю его локально в Visual Studio 2010. Кроме того, я пытался написать% 2B вместо + в атрибуте src html-изображения, это не сработало. Кроме того, я попытался изменить имя папки на сервере, сделав + на %2B, и это тоже не работает.   -  person E-A    schedule 30.04.2012
comment
Не меняйте его на сервере.   -  person ta.speot.is    schedule 30.04.2012
comment
Я также пробовал, ТОЛЬКО изменяя URL-адрес с + на %2B и ОСТАВЛЯЯ имя папки сервера как + без изменений. К сожалению, это тоже не помогло.   -  person E-A    schedule 30.04.2012


Ответы (2)


Забавно, сегодня я столкнулся с чем-то подобным, когда использовал IIS ARR для обратного прокси-сервера приложения TomCat, работающего в Windows, которое использует символы + в своих URL-адресах.

Попробуйте разрешить allowDoubleEscaping на сайте. Если у вас есть доступ к IIS MMC, его можно настроить в апплете Request Filtering:

введите здесь описание изображения

Если нет, и ваш хостер разрешает, вы можете установить это в файле web.config вашего сайта:

<configuration>
  <system.webServer>
    <security>
      <requestFiltering allowDoubleEscaping="true">
      </requestFiltering>
    </security>
  </system.webServer>
</configuration>

Должен работать, если вы получали:

Ошибка HTTP 404.11 — не найдено

Модуль фильтрации запросов настроен на отклонение запроса, содержащего двойную управляющую последовательность.

person Kev    schedule 03.05.2012
comment
Определенно круто! Большое Вам спасибо. Полностью решил мою проблему! - person E-A; 04.05.2012

К сожалению, мне не удалось решить эту проблему на сервере, вместо этого я изменил имена ссылок в соответствующей базе данных, удалив символ «+».

Поэтому я считаю справедливым сказать, что даже если символ «+» работает на локальном компьютере с виртуальным сервером IIS Visual Studio, это не означает, что он будет работать на сервере Windows.

Я хотел бы поблагодарить ta.speot.is за его усилия.

person E-A    schedule 02.05.2012