Por que o IIS está carregando uma versão de tempo de execução .NET diferente da qual o pool de aplicativos está configurado?

3

Um site no IIS está definido para usar um pool de aplicativos definido para usar o .NET Framework versão 4.0. Este site não consegue carregar as DLLs compiladas com o 4.0. Páginas neste site que exibem a versão da estrutura ( System.Environment.Version ) 2.0 carregado.

Por que este site está carregando o framework 2.0? Como pode ser configurado para carregar o framework 4.0?

O pool de aplicativos foi reciclado.
Outros sites nesta caixa estão carregando e executando a estrutura 4.0.

    
por burkemw3 18.10.2011 / 23:45

3 respostas

0

Por Microsoft:

"A versão do .NET Framework em que um aplicativo é executado é determinada da seguinte maneira:

"Se a versão do .NET Framework em que o aplicativo foi criado estiver presente no computador, o aplicativo será executado nessa versão."

O site foi compilado para segmentar o .NET 2.0?

Para verificar a versão do framework e a versão do CLR que é direcionada, existe um utilitário, corflags.exe, que você pode usar. Para a pasta bin na qual os assemblies estão localizados, execute o seguinte comando:

for %i in (*.exe,*.dll) do corflags.exe %i  

Ele exibirá, entre outras coisas, a versão do .NET Framework que o assembly está direcionando. Observe que você também pode usar corflags.exe para modificar o cabeçalho PE dos assemblies para direcionar a versão .NET 4.0 CLR, mas provavelmente é melhor recompilar para .NET 4.0 no Visual Studio.

Como: Usar um arquivo de configuração de aplicativo para direcionar uma versão do .NET Framework
link

supportedOrdem de tempo de execução no app.config
link

link

Informações da Corflags:
link
link

    
por 19.10.2011 / 02:32
0

Você já verificou a diretiva <compilation> em <system.web> em web.config ?

    
por 19.10.2011 / 00:17
0

Simplificando, não funciona assim. Pense em definir a versão do pool de aplicativos como definindo um ambiente padrão se ninguém perguntar por mais alguma coisa . Se 2 aplicativos estiverem em um pool de aplicativos e 1 usar o 2.0 e 1 usar o 4.0, isso dependerá de quem receber primeiro a chamada da versão da estrutura executada nesse pool de aplicativos. A maneira que um administrador pode "consertar" isso (e você provavelmente não deveria, já que o aplicativo provavelmente estava direcionado a 2.0) é definindo o supportedruntime no arquivo application.config (seu em tempo de execução) veja < supportedRuntime > Elemento

    
por 19.10.2011 / 07:23