Come si impedisce che il file web.config del sito predefinito IIS venga ereditato dalle directory virtuali?

StackOverflow https://stackoverflow.com/questions/37759

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à?

È stato utile?

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?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top