[A] System.Web.WebPages.Razor.Configuration.HostSection não pode ser convertido para… problema na web.config

158

Eu estou recebendo o seguinte erro:

[A] System.Web.WebPages.Razor.Configuration.HostSection não pode ser convertido para [B] System.Web.WebPages.Razor.Configuration.HostSection. O tipo A se origina de 'System.Web.WebPages.Razor, versão = 2.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' no contexto 'Padrão' no local 'C: \ WINDOWS \ Microsoft.Net \ assembly \ GAC_MSIL \ System .Web.WebPages.Razor \ v4.0_2.0.0.0__31bf3856ad364e35 \ System.Web.WebPages.Razor.dll '. O tipo B é originário de 'System.Web.WebPages.Razor, versão = 3.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' no contexto 'Padrão' no local 'C: \ Usuários \ MeuNome \ AppData \ Local \ Temp \ Temporário Arquivos ASP.NET \ root \ 63e7ff36 \ a1cb775d \ assembly \ dl3 \ 8f568c18 \ 9b7ddacf_d04dcf01 \ System.Web.WebPages.Razor.dll '.

Eu procurei no stackoverflow por problemas semelhantes e usei as soluções deles, mas isso não parece corrigir o problema que estou enfrentando.

De repente ocorreu, eu apenas pressionei solução limpa e esse erro apareceu. Também comecei a usar a restauração de pacotes nuget na solução. Também atualizei meus pacotes (usando o Update-package) para que um deles possa ter algo a ver com esse problema.

Maxim Geerinck
fonte

Respostas:

274

Estou usando o VS2013, MVC 5.2.2.0, API da Web 2. Acabei de alterar todas as versões de 2.0.0.0 para 3.0.0.0 da seção a seguir do Web.config, que fica dentro da pasta Exibir do meu projeto.

<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
  <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
  <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>

E o problema é resolvido. BINGO !!

Kuntal Ghosh
fonte
7
Isso fez o trabalho para mim. Obrigado!
Joseph Woodward
1
Isso resolveu para mim. Estou convertendo um aplicativo de formulários da web para MVC5.
Ray
1
@ guneysus, como você faria o equivalente à resposta de Kuntal sem edição manual?
Twm
@twm Geralmente Update-Packagetambém editaweb.config
guneysus
É por isso que eu amo tanto!
Homunculus Reticulli
102

Apenas adicionando meus dois centavos a esta questão.

Descobri que a causa desse erro para mim era que as pastas do Views, web.config, estavam fazendo referência System.Web.WebPages.Razor, Version=2.0.0.0quando todo o resto estava usando3.0.0.0

Parece que a atualização do pacote nuget não foi responsável por essa pasta de alguma forma.

Niclas Lindqvist
fonte
1
é mais preciso! web.config na pasta views.
precisa
58

A causa desse erro é o web.config na pasta Views que faz referência ao System.Web.WebPages.Razor, Version = 2.0.0.0 em vez de 3.0.0.0.

Normalmente, isso pode acontecer após uma atualização do pacote de nuget, que não é responsável por essa pasta.

Atualize o Views\Web.configarquivo:

<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
  <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
  <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>

para obter mais informações sobre a atualização para o MVC 5 http://www.asp.net/mvc/tutorials/mvc-5/how-to-upgrade-an-aspnet-mvc-4-and-web-api-project-to- aspnet-mvc-5-e-web-api-2

Maxim Geerinck
fonte
5
não parece uma correção, e sim uma solução para mim. alguns projetos podem depender apenas do
mvc4
12
Em particular, parece que a correção desse erro está na seção "Atualize os arquivos web.config na pasta Views". Parece que a atualização do MVC4 -> MVC5 com NuGet não atualiza automaticamente os números de versão em Views / Web.config.
Tyler
Obrigado pelo link! Teria sido bom se a atualização NuGet poderia ter pelo menos mostrado um link para a página ...
Jedidja
Eu segui o guia e agora eu não posso correr o meu site no modo de depuração - me diz "... Projeto com o tipo de biblioteca de classes de saída não pode ser iniciada ..."
Matt
2
Funcionou para mim, meu principal problema foi causado porque eu não havia atualizado as versões no web.config na subpasta Views.
connectedsoftware
13

Tentei todos os métodos acima e o problema ainda não foi resolvido até inserir as seguintes linhas no web.config diretamente na pasta do projeto.

  <dependentAssembly>
    <assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
  </dependentAssembly>
Jian Huang
fonte
3

Se você conseguir isso com o Route Debugger, precisará atualizar o web.config na pasta Views, na área do Route Debugger.

Luke Puplett
fonte
Lifesaver. Obrigado.
6footunder
Você pode esclarecer isso, por favor.
precisa saber é
1

No meu caso, resolvi isso atualizando também o Web.config no servidor ativo que o VS atualizou ao atualizar para o MVC 5

rajeemcariazo
fonte