Como você evita que o arquivo web.config do site padrão do IIS seja herdado por diretórios virtuais?

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

Pergunta

Eu tenho o seguinte código em um arquivo web.config do site IIS padrão.

<httpModules>
    <add type="MDL.BexWebControls.Charts.ChartStreamHandler,Charts" name="ChartStreamHandler"/>
</httpModules>

Então, quando eu configuro e navego para um diretório virtual, recebo este erro

Não foi possível carregar o arquivo ou assembly 'Gráficos' ou uma de suas dependências.O sistema não pode encontrar o arquivo especificado.

O diretório virtual está herdando os módulos do web.config padrão.

Como você interrompe essa herança?

Foi útil?

Solução

Eu encontrei a resposta.Envolva a seção HttpModule em tags de localização e defina o atributo inheritInChildApplications como false.

<location path="." inheritInChildApplications="false">
  <system.web>
    <httpModules>
      <add type="MDL.BexWebControls.Charts.ChartStreamHandler,Charts" name="ChartStreamHandler"/>
    </httpModules>
  </system.web>
</location>

Agora, nenhum diretório virtual herdará as configurações nesta seção de localização.

@GateKiller Este não é outro site, é um diretório virtual, portanto ocorre herança.

@petrich, obtive resultados acertados e errados usando <remove />.Tenho que lembrar de adicioná-lo a todos os diretórios virtuais, o que é uma dor.

Outras dicas

Adicione o seguinte ao arquivo web.config do diretório virtual:

<httpModules>
    <remove name="ChartStreamHandler"/>
</httpModules>

De acordo com a Microsoft, outros sites não herdam as configurações do site padrão.Você quer dizer que está editando o web.config padrão que está localizado na mesma pasta que o machine.config?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top