Applicationhost.config IIS 7.5 (Express): czy ścieżka fizyczna katalogu virtualDirectory może być ścieżką względną?

9

Konfiguruję witrynę applicationhost.configdla IIS 7.5 Express:

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

Odkryłem, że określenie względnych ścieżek, jak pokazano, nie działa i doprowadzi do HTTP 500.19 Internal Server Error. IIS ponadto zgłasza kod błędu 0x8007007b, który po pewnym googlowaniu wydaje się wskazywać na niepoprawną składnię ścieżki pliku.

Czy istnieje jakiś sposób obejścia tego błędu, aby można było użyć względnej ścieżki fizycznej dla katalogu głównego mojej witryny?

stakx
źródło

Odpowiedzi:

6

Niestety nie. To musi być pełna ścieżka fizyczna. Dopóki nie planujesz często zmieniać ścieżki witryny, ścieżka statyczna nie powinna stanowić problemu. Jeśli często zmieniasz ścieżkę do różnych instancji witryny, możesz rozważyć użycie appcmd do skryptu zmiany, aby uzyskać wszystkie podfoldery.

Scott Forsyth - MVP
źródło
1
Jeśli byłoby to przydatne dla deweloperów, na przykład podczas rozgałęziania, jeśli Vdir może być względny do pliku konfiguracyjnego, który można sprawdzić w kontroli źródła. Wszelkie pomysły, jak to zrobić?
PilotBob,
3
Ścieżki względne nie są obsługiwane w obecnych wersjach IIS, niestety, więc najczystszym rozwiązaniem jest użycie tej samej ścieżki na każdym komputerze. Jeśli musisz mieć różne ścieżki na różnych komputerach (zakładam, że są to maszyny deweloperskie), możesz wypróbować zmienną środowiskową. Utwórz systemową zmienną środowiskową, aby była dostępna dla usług IIS, i użyj jej jako katalogu głównego ścieżki w poszczególnych systemach.
Scott Forsyth - MVP
2
Wygląda na to, że niektóre zmienne środowiskowe są obsługiwane, np <virtualDirectory path="/" physicalPath="%IIS_SITES_HOME%\WebSite1" />.
Uwe Keim,
@UweKeim Masz rację, działa to z bieżącą wersją wersji IIS. IIS 10 obsługuje teraz zmienne w physicalPath. Zauważ, że% IIS_SITES_HOME% dotyczy IIS Express. Ta zmienna nie istnieje w pełnej wersji IIS. Jednak inne zmienne systemowe działają.
Scott Forsyth - MVP