Como você evita que o arquivo web.config do site padrão do IIS seja herdado por diretórios virtuais?
-
09-06-2019 - |
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?
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?