2010-07-21 20 views
1

J'ai une boîte WinSrv2k3 avec IIS6 accueillir une série de sites, dont l'un est un site VB/.NET2. A l'intérieur, j'ai créé un répertoire virtuel et l'ai pointé sur un répertoire très simple du site C#/.NET3.5. Je me attendais le site pour me permettre de voir les pages comme un site normal (il n'y a qu'un seul ASMX dans le répertoire virtuel), mais lorsque vous accédez à la page à partir d'un navigateur, je reçois:IIS6 Répertoire virtuel non accessible comme une application

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 

La question que je vois là, est que le web.config jetant l'exception semble être le .config du site Web parent, pas le web.config dans le répertoire virtuel. Mais je ne comprends pas pourquoi. Lors de l'accès aux pages régulières du site Web (pas sous le répertoire virtuel), elles sont affichées et fonctionnent normalement, ce qui indique que la DLL IMSControls ne peut pas être chargée à partir du répertoire virtuel, mais je ne comprends pas pourquoi cela même être impliqué dans le processus.

Répondre

0

Ok, bien, après quelques faux départs, lourd googler m'a donné la bonne chose à rechercher: l'héritage web.config. Fondamentalement, pour empêcher un répertoire virtuel d'hériter des attributs du web.config de son site parent (et par conséquent de ses problèmes) le web.config du site parent doit avoir son élément <system.web> enveloppé dans un nouveau (pour moi) tag:

<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

http://msdn.microsoft.com/en-us/library/ms178685.aspx