IIS 7.5 (Express) applicationhost.config: le chemin physique d'un répertoire virtuel peut-il être un chemin relatif?

9

Je configure un site applicationhost.configpour IIS 7.5 Express:

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

J'ai trouvé que la spécification de chemins relatifs comme indiqué ne semble pas fonctionner et conduira à un HTTP 500.19 Internal Server Error. IIS signale en outre le code d'erreur 0x8007007b, qui, après quelques recherches, semble indiquer une syntaxe de chemin de fichier non valide.

Existe-t-il un moyen de contourner cette erreur, afin que je puisse utiliser un chemin physique relatif pour la racine de mon site?

stakx
la source

Réponses:

6

Malheureusement non. Ce doit être un chemin physique complet. Tant que vous ne prévoyez pas de changer souvent le chemin de votre site, un chemin statique ne devrait pas être un problème. Si vous modifiez souvent votre chemin vers différentes instances de site, vous souhaiterez peut-être envisager d'utiliser appcmd pour scripter la modification afin qu'elle obtienne tous les sous-dossiers.

Scott Forsyth - MVP
la source
1
Ce serait bien pour le développeur, par exemple lors de la ramification, si le Vdir pourrait être relatif au fichier de configuration qui pourrait être vérifié dans le contrôle de source. auriez vous des idées pour faire ça?
PilotBob
3
Les chemins relatifs ne sont pas pris en charge avec les versions actuelles d'IIS, malheureusement, la solution la plus propre consiste donc à utiliser le même chemin sur chaque machine. Si vous devez avoir des chemins différents sur différentes machines (je suppose que les machines de développement), alors vous pouvez essayer une variable d'environnement. Créez une variable d'environnement système afin qu'elle soit disponible pour IIS et utilisez-la pour la racine du chemin sur les systèmes individuels.
Scott Forsyth - MVP
2
Il semble que certaines variables d'environnement soient prises en charge, par exemple <virtualDirectory path="/" physicalPath="%IIS_SITES_HOME%\WebSite1" />.
Uwe Keim
@UweKeim Vous avez raison, cela fonctionne avec la ou les versions actuelles d'IIS. IIS 10 prend désormais en charge les variables dans physicalPath. Notez que% IIS_SITES_HOME% est pour IIS Express. Cette variable n'existe pas dans la version complète d'IIS. Cependant, d'autres variables système fonctionnent.
Scott Forsyth - MVP