Come si impedisce che il file web.config del sito predefinito IIS venga ereditato dalle directory virtuali?
-
09-06-2019 - |
Domanda
Ho il seguente codice in un file web.config del sito IIS predefinito.
<httpModules>
<add type="MDL.BexWebControls.Charts.ChartStreamHandler,Charts" name="ChartStreamHandler"/>
</httpModules>
Quindi, quando configuro e navigo in una directory virtuale, ricevo questo errore
Impossibile caricare il file o l'assembly "Grafici" o una delle sue dipendenze.Il sistema non trova il file specificato.
La directory virtuale eredita i moduli dal web.config predefinito.
Come fermare questa eredità?
Soluzione
Ho trovato la risposta.Racchiudi la sezione HttpModule nei tag di posizione e imposta l'attributo inheritInChildApplications su false.
<location path="." inheritInChildApplications="false">
<system.web>
<httpModules>
<add type="MDL.BexWebControls.Charts.ChartStreamHandler,Charts" name="ChartStreamHandler"/>
</httpModules>
</system.web>
</location>
Ora qualsiasi directory virtuale non erediterà le impostazioni in questa sezione della posizione.
@GateKiller Questo non è un altro sito Web, è una directory virtuale, quindi si verifica l'ereditarietà.
@petrich Ho avuto risultati incostanti utilizzando <remove />
.Devo ricordarmi di aggiungerlo a ogni directory virtuale, il che è una seccatura.
Altri suggerimenti
Aggiungi quanto segue al file web.config della directory virtuale:
<httpModules>
<remove name="ChartStreamHandler"/>
</httpModules>
Secondo Microsoft, altri siti Web non ereditano le impostazioni dal sito Web predefinito.Vuoi dire che stai modificando il web.config predefinito che si trova nella stessa cartella di machine.config?