IIS 7.5 (Express) applicationhost.config: Kann der physische Pfad eines virtuellen Verzeichnisses ein relativer Pfad sein?

9

Ich konfiguriere eine Site in applicationhost.configfür IIS 7.5 Express:

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

Ich habe festgestellt, dass die Angabe relativer Pfade wie gezeigt nicht funktioniert und zu einem HTTP führt 500.19 Internal Server Error. IIS meldet ferner einen Fehlercode 0x8007007b, der nach einigem googeln auf eine ungültige Dateipfadsyntax hinweist.

Gibt es eine Möglichkeit, diesen Fehler zu umgehen, sodass ich den relativen physischen Pfad für das Stammverzeichnis meiner Site verwenden kann?

stakx
quelle

Antworten:

6

Unglücklicherweise nicht. Das muss ein vollständiger physischer Weg sein. Solange Sie nicht vorhaben, Ihren Site-Pfad häufig zu ändern, sollte ein statischer Pfad kein Problem darstellen. Wenn Sie Ihren Pfad häufig zu verschiedenen Site-Instanzen ändern, sollten Sie die Änderung mit appcmd skripten, damit alle Unterordner abgerufen werden.

Scott Forsyth - MVP
quelle
1
Wäre für dev zum Beispiel beim Verzweigen schön, wenn das Vdir relativ zur Konfigurationsdatei sein könnte, die in die Quellcodeverwaltung eingecheckt werden könnte. Irgendwelche Ideen, wie das geht?
PilotBob
3
Relative Pfade werden in den aktuellen Versionen von IIS leider nicht unterstützt. Die sauberste Lösung besteht daher darin, auf jedem Computer denselben Pfad zu verwenden. Wenn Sie auf verschiedenen Computern unterschiedliche Pfade haben müssen (ich nehme an, dass es sich um Entwicklungscomputer handelt), können Sie eine Umgebungsvariable ausprobieren. Erstellen Sie eine Systemumgebungsvariable, damit sie für IIS verfügbar ist, und verwenden Sie diese für den Stamm des Pfads auf den einzelnen Systemen.
Scott Forsyth - MVP
2
Es scheint jedoch, dass einige Umgebungsvariablen unterstützt werden, z <virtualDirectory path="/" physicalPath="%IIS_SITES_HOME%\WebSite1" />.
Uwe Keim
@UweKeim Sie haben Recht, dies funktioniert mit den aktuellen Versionen von IIS. IIS 10 unterstützt jetzt Variablen im PhysicalPath. Beachten Sie, dass% IIS_SITES_HOME% für IIS Express ist. Diese Variable ist in der Vollversion von IIS nicht vorhanden. Andere Systemvariablen funktionieren jedoch.
Scott Forsyth - MVP