terça-feira, 5 de outubro de 2010

Herança no Web.Config - Resolvendo problema de conflito

Fala, galera!!

Segue mais uma dica valiosa que irá poupar tempo de muita gente.

Durante o processo de migração me deparei com um conflito no web.config que ainda não sei se é uma característica do Framework 4.0 ou do IIS 7.

Meu cenário é o seguinte:
Minha solution possui um Web Application referente ao Front-End cujo Framework é o 4.0 e um outro Web Application referente à área de administração cujo Framework é o 3.5. Motivo: Estou utilizando o Asp.Net Dynamic Data para a administração e a nova versão do mesmo não possui o Dynamic Data Filtering implementado. Desta forma, para adicionar novos filtros dinamicamente eu teria que codificar meus próprios templates de filtro. Como outra pessoa já fez isso para a primeira versão do A.D.D, decidi manter esta versão que me atende plenamente.

Prosseguindo...
Meu IIS possui um website principal e um aplicação "filha" que é a área de administração.
Ao fazer o deploy para produção passou a ocorrer um conflito de versões.
Aparentemente, minha aplicação 3.5 estava herdando o web.config da aplicação 4.0.

Perdi um bom tempo tentando entender, mas achei a solução. Bem simples, por sinal.

Basta adicionar a seguinte linha no web.config, logo acima da tag <system.web>:

<location path="." inheritInChildApplications="false">

No meu caso, o web.config ficou mais ou menos assim:


<location path="." inheritInChildApplications="false">
<system.web>
<compilation debug="false" strict="false" explicit="true" targetFramework="4.0">
                        ...
               </system.web>
</location>

Todo código incluído na tag <location> não será herdado pelas aplicações "filhas".
No meu caso, a linha que continha a tag <compilation> estava gerando o conflito.

Um abraço e até a próxima!!

Um comentário: