Posso utilizar o arquivo web.config, em pastas e subpastas de minha Hospedagem Windows? - Tutoriais e FAQs UOL Host
Em hospedagens Windows um arquivo de configuração web.config pode conflitar com outro arquivo web.config localizado em outras pastas da mesma hospedagem.
Isso ocorre porque as configurações contidas nesses arquivos são automaticamente herdadas por outros arquivos de configuração de alguma subpasta.
Essa situação pode ser identificada pelos erros abaixo:
Cannot add duplicate collection entry of type 'add' with unique key attribute 'name' set to 'xxx'
Este erro indica que o arquivo de configuração atual esta tentando redefinir um mesmo elemento de configuração já definido anteriormente. Neste caso é necessário remover/omitir a configuração anterior para depois redefinir uma nova.
Could not load file or assembly 'xxx' or one of its dependencies. The system cannot find the file specified.
Este erro indica que um assembly (DLL) referenciado não existe na pasta BIN do diretório atual onde estiver rodando a aplicação. Neste caso é necessário remover/omitir do arquivo de configuração web.config, as referências aos assemblies que não existirem no diretório BIN da aplicação atual.
Caso a aplicação que você esteja executando apresente um dos erros acima e esteja em uma pasta setada com aplicação IIS. Verifique se existem arquivos de configuração web.config em diretórios nos níveis acima da atual.
Por exemplo, se a aplicação em questão estiver na pasta "web/este", verifique se existe um arquivo de configuração web.config na pasta "web".
Para solucionar esses problemas duas técnicas podem ser utilizadas individualmente ou em conjunto.
A primeira delas é a utilização da tag abaixo:
< remove name=""xxx"">< /remove>
A qual deve ser utilizada dentro do arquivo de configuração web.config da aplicação "filha". Essa tag permite remover uma configuração que foi definida anteriormente em algum arquivo de configuração de uma aplicação "pai".
Segue exemplos de utilização:
< remove name="xxx">
Além da tag "configSections" essa técnica pode ser aplicada também nas tags "connectionStrings", "assemblies" e "providers".
A segunda é a utilização da tag abaixo:
< location inheritinchildapplications="false" path=""."">< /location>
Neste caso específico é necessário colocar esta configuração dentro do arquivo web.config da aplicação "pai" para impedir que esta configuração seja herdada por outras aplicações "filhas", evitando assim conflitos.