Каков правильный синтаксис относительных путей в web.config?

У меня есть такая структура сайта:

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

И я хотел бы использовать относительный путь к моему test_isapi.dll в файле web.config для приложения ISAPI. Я безуспешно пытался заменить C:\TestSite1\TestSite2\ISAPI\test_isapi.dll следующими относительными путями:

  • test_isapi.dll
  • ~/test_isapi.dll
  • ~\test_isapi.dll
  • ISAPI\test_isapi.dll

У меня неправильный синтаксис для относительного пути или это просто невозможно для настроек обработчика в конфигурации?

Текущий (работает с абсолютным путем) web.config (TestSite1/TestSite2/ISAPI/web.config):

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="Test ISAPI"
           path="*"
           verb="*"
           modules="IsapiModule"
           scriptProcessor="C:\TestSite1\TestSite2\ISAPI\test_isapi.dll"
           resourceType="Unspecified"
           requireAccess="None"
           preCondition="bitness32" />
    </handlers>
  </system.webServer>
</configuration>

person invertigo    schedule 01.11.2013    source источник


Ответы (3)


Мое решение состояло в том, чтобы программно проверить и добавить сопоставление обработчика вместо развертывания параметра с помощью web.config. Таким образом, я могу определить абсолютный путь во время выполнения и применить настройку. Не идеально, но со своей задачей справляется.

См. этот ответ: Как программно добавить сопоставление обработчика IIS

person invertigo    schedule 01.11.2013

config вы можете написать ~/filepath

person user2539602    schedule 01.11.2013
comment
вы можете видеть в моем вопросе, что я пробовал ~/test_isapi.dll, но это не сработало. можно поконкретнее для моего примера? - person invertigo; 01.11.2013
comment
Смотрите мой комментарий к ответу @Gopalakrishnan. Это решение не будет работать в разделе System.webServer. - person Philip Stratford; 17.05.2017

Чтобы использовать относительный путь, просто добавьте ~/test_isapi.dll для веб-конфигурации сайта ISAPI.

person Gopalakrishnan    schedule 01.11.2013
comment
как я уже упоминал выше, это не работает. Я знаю, что это работает для других случаев в web.config, но что-то в разделе обработчиков или атрибуте scriptProcessor должно быть другим. - person invertigo; 01.11.2013
comment
проверьте эту ссылку для обработчиков iis.net/configreference/system.webserver/handlers - person Gopalakrishnan; 20.11.2013
comment
Относительные пути не будут работать в разделе System.webServer. В этом разделе вы, по сути, настраиваете сам веб-сервер, который не имеет понятия о веб-приложении, чтобы получить относительный путь. Пути должны быть абсолютными. Решение OP - единственный способ обойти это, если вы не готовы поместить файлы, на которые есть ссылки, в корень приложения, и в этом случае они работают с путем file.htm. - person Philip Stratford; 17.05.2017