Répertoire virtuel IIS6 non accessible en tant qu'application
-
18-09-2020 - |
Question
J'ai un boîtier WinSrv2k3 avec IIS6 hébergeant une série de sites, dont un site VB/.NET2.À l’intérieur, j’ai créé un répertoire virtuel et l’ai pointé vers le répertoire d’un site C#/.NET3.5 très simple.Je m'attendais à ce que le site me permette de visualiser les pages comme un site normal (il n'y a qu'un seul ASMX dans le répertoire virtuel) mais en accédant à la page depuis un navigateur, j'obtiens :
Server Error in '/TestVbSite' Application.
Configuration Error
Description: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately.
Parser Error Message: Could not load file or assembly 'IMSControls' or one of its dependencies. The system cannot find the file specified. (D:\sites\TestVbSite\web.config line 211)
Source Error:
Line 209: </httpHandlers>
Line 210: <httpModules>
Line 211: <add name="UrlRewritingModule" type="IMS.Controls.HttpModules.UrlRewritingModule, IMSControls" />
Line 212: </httpModules>
Line 213: </system.web>
Source File: D:\sites\TestVbSite\web.config Line: 211
Le problème que je vois ici est que le web.config qui lance l'exception semble être le .config du site Web parent, et non le web.config dans le répertoire virtuel.Mais je ne comprends pas pourquoi.
Lors de l'accès aux pages normales du site Web (pas sous le répertoire virtuel), elles s'affichent et fonctionnent normalement, indiquant que la DLL IMSControls est incapable de se charger à partir du répertoire virtuel, mais encore une fois, je ne comprends pas pourquoi cela serait même impliqué dans le processus.
La solution
Ok, eh bien, après quelques faux départs, une recherche approfondie sur Google m'a donné la bonne chose à rechercher :Héritage web.config.
Fondamentalement, pour empêcher un répertoire virtuel d'hériter des attributs du fichier web.config de son site parent (et donc de tout problème lié à celui-ci), le fichier web.config du site parent doit avoir son <system.web>
élément enveloppé dans une nouvelle balise (pour moi) :
<location path="." inheritInChildApplications="false">
<system.web>
...
</system.web>
</location>
Liens utiles:
http://forums.asp.net/t/1164283.aspx
http://dotnetslackers.com/Security/re-55457_Stopping_ASP_NET_web_config_inheritance.aspx