IIS 7.5 (Express) applicationhost.config: Может ли физический путь virtualDirectory быть относительным путем?

9

Я настраиваю сайт applicationhost.configдля IIS 7.5 Express:

<site name="default" id="1" serverAutoStart="true">
    <application path="/">
        <virtualDirectory path="/" physicalPath="%IIS_BIN%\..\Somewhere\Else" />
                                            <!-- ^^^^^^^^^^^^^^^^^^^^^^^^^^^ -->
    </application>
    ...
</site>

Я обнаружил, что указание относительных путей, как показано, не работает и приведет к HTTP 500.19 Internal Server Error. Далее IIS сообщает код ошибки 0x8007007b, который после некоторого поиска в Google, похоже, указывает на неверный синтаксис пути к файлу.

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

stakx
источник

Ответы:

6

К сожалению нет. Это должен быть полный физический путь. Пока вы не планируете часто менять путь своего сайта, статический путь не должен быть проблемой. Если вы часто меняете путь к другим экземплярам сайта, возможно, вы захотите использовать appcmd для сценария изменения, чтобы он получал все подпапки.

Скотт Форсайт - MVP
источник
1
Если было бы хорошо для dev, например, при ветвлении, если Vdir может быть относительно файла конфигурации, который может быть проверен в системе контроля версий. Есть идеи, как это сделать?
PilotBob
3
Относительные пути не поддерживаются в текущих версиях IIS, к сожалению, поэтому самое чистое решение - использовать один и тот же путь на каждой машине. Если у вас должны быть разные пути на разных машинах (я полагаю, машины для разработки), тогда вы можете попробовать переменную окружения. Создайте системную переменную среды, чтобы она была доступна для IIS, и используйте ее для корня пути в отдельных системах.
Скотт Форсайт - MVP
2
Кажется, что некоторые переменные среды поддерживаются, хотя, например <virtualDirectory path="/" physicalPath="%IIS_SITES_HOME%\WebSite1" />.
Уве Кейм
@UweKeim Вы правы, это работает с текущей версией (версиями) IIS. IIS 10 теперь поддерживает переменные в физическом пути. Обратите внимание, что% IIS_SITES_HOME% предназначен для IIS Express. Эта переменная не существует в полной версии IIS. Однако другие системные переменные работают.
Скотт Форсайт - MVP