[A] System.Web.WebPages.Razor.Configuration.HostSection nie może zostać przesłany do… problem z web.config

158

Otrzymuję następujący błąd:

[A] System.Web.WebPages.Razor.Configuration.HostSection nie może zostać przesłany do [B] System.Web.WebPages.Razor.Configuration.HostSection. Typ A pochodzi z „System.Web.WebPages.Razor, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35” w kontekście „Default” w lokalizacji „C: \ WINDOWS \ Microsoft.Net \ assembly \ GAC_MSIL \ System .Web.WebPages.Razor \ v4.0_2.0.0.0__31bf3856ad364e35 \ System.Web.WebPages.Razor.dll '. Typ B pochodzi z „System.Web.WebPages.Razor, Version = 3.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35” w kontekście „Default” w lokalizacji „C: \ Users \ MyName \ AppData \ Local \ Temp \ Temporary Pliki ASP.NET \ root \ 63e7ff36 \ a1cb775d \ assembly \ dl3 \ 8f568c18 \ 9b7ddacf_d04dcf01 \ System.Web.WebPages.Razor.dll '.

Przeszukałem stosy w celu znalezienia podobnych problemów i zastosowałem ich rozwiązania, ale wydaje się, że nie rozwiązuje to problemu, którego doświadczam.

Nagle się wydarzyło, właśnie nacisnąłem czysty roztwór i wyskoczył ten błąd. Zacząłem również korzystać z przywracania pakietu NuGet w rozwiązaniu. Zaktualizowałem również moje pakiety (używając Update-package), więc jeden z nich może mieć coś wspólnego z tym problemem.

Maxim Geerinck
źródło

Odpowiedzi:

274

Używam VS2013, MVC 5.2.2.0, Web Api 2. Właśnie zmieniłem wszystkie wersje z 2.0.0.0 na 3.0.0.0 poniższej sekcji pliku Web.config, który znajduje się w folderze Widok mojego projektu.

<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>

I problem zostaje rozwiązany. BINGO !!

Kuntal Ghosh
źródło
7
To wykonało pracę za mnie. Dzięki!
Joseph Woodward
1
To rozwiązało to dla mnie. Konwertuję aplikację webforms na MVC5.
Ray
1
@guneysus, jak zrobiłbyś odpowiednik odpowiedzi Kuntala bez ręcznej edycji?
twm
@twm Generalnie Update-Packagerównież edytujeweb.config
guneysus
Dlatego TAK KOCHAM!
Homunculus Reticulli
102

Dodam tylko moje dwa centy do tego numeru.

Zauważyłem, że przyczyną tego błędu było dla mnie to, że foldery widoków web.config odwoływały się, System.Web.WebPages.Razor, Version=2.0.0.0gdy wszystko inne było używane3.0.0.0

Wydaje się, że uaktualnienie pakietu nuget nie uwzględniło w jakiś sposób tego folderu.

Niclas Lindqvist
źródło
1
jest bardziej precyzyjny! web.config w folderze widoków.
Rohit Verma
58

Przyczyną tego błędu jest plik web.config w folderze Views odwołujący się do System.Web.WebPages.Razor, Version = 2.0.0.0 zamiast 3.0.0.0.

Zwykle może się to zdarzyć po uaktualnieniu pakietu nuget, które nie uwzględnia tego folderu.

Zaktualizuj Views\Web.configplik:

<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>

aby uzyskać więcej informacji na temat aktualizacji do 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-and-web-api-2

Maxim Geerinck
źródło
5
nie brzmi to jak naprawa, raczej obejść dla mnie. niektóre projekty mogą zależeć tylko od mvc4
stenly
12
W szczególności wygląda na to, że poprawka dla tego błędu znajduje się w sekcji „Zaktualizuj pliki web.config w folderze Widoki”. Wydaje się, że aktualizacja z MVC4 -> MVC5 za pomocą NuGet nie aktualizuje automatycznie numerów wersji w Views / Web.config.
Tyler
Dzięki za link! Byłoby miło, gdyby aktualizacja NuGet mogła przynajmniej pokazać link do tej strony ...
Jedidja
Postępowałem zgodnie z instrukcją i teraz nie mogę uruchomić mojej witryny w trybie debugowania - mówi mi „... Nie można uruchomić projektu z typem wyjściowym biblioteki klas ...”
Matt
2
U mnie zadziałało, mój główny problem był spowodowany tym, że nie zaktualizowałem wersji w web.config w podfolderze Widoki.
connectedsoftware
13

Wypróbowałem wszystkie powyższe metody i problem nadal nie został rozwiązany, dopóki nie wstawiłem następujących wierszy w web.config bezpośrednio w folderze projektu.

  <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
źródło
3

Jeśli uzyskasz to za pomocą Route Debugger, musisz zaktualizować web.config w folderze Views w obszarze dla Route Debugger.

Luke Puplett
źródło
Ratownik. Dzięki.
stóp pod
Czy możesz to wyjaśnić?
Si8
1

W moim przypadku rozwiązałem to, aktualizując również plik Web.config na serwerze rzeczywistym, który VS zaktualizował po uaktualnieniu do MVC 5

rajeemcariazo
źródło