次のエラーが表示されます。
[A] System.Web.WebPages.Razor.Configuration.HostSectionは、[B] System.Web.WebPages.Razor.Configuration.HostSectionにキャストできません。タイプAは、「System:Web.WebPages.Razor、Version = 2.0.0.0、Culture = neutral、PublicKeyToken = 31bf3856ad364e35」から発生します。コンテキスト「Default」の場所「C:\ WINDOWS\Microsoft.Net\Assembly\GAC_MSIL\System .Web.WebPages.Razor\v4.0_2.0.0.0__31bf3856ad364e35\System.Web.WebPages.Razor.dll '。タイプBは、「System:Web.WebPages.Razor、Version = 3.0.0.0、Culture = neutral、PublicKeyToken = 31bf3856ad364e35」から発生します。コンテキスト「Default」の場所「C:\ Users\MyName\AppData\Local\Temp\Temporary ASP.NET Files\root\63e7ff36\a1cb775d\Assembly\dl3\8f568c18\9b7ddacf_d04dcf01\System.Web.WebPages.Razor.dll '.
Stackoverflowで同様の問題を検索し、それらのソリューションを使用しましたが、発生している問題を解決できないようです。
それが突然発生し、きれいな解決策を押したところ、このエラーがポップアップしました。また、ソリューションでnugetパッケージの復元を使用し始めました。パッケージも(Update-packageを使用して)更新したため、そのうちの1つがこの問題に関係している可能性があります。
このエラーの原因は、3.0.0.0ではなくSystem.Web.WebPages.Razor、Version = 2.0.0.0を参照するViewsフォルダー内のweb.configにあります。
通常、これは、このフォルダーを考慮しないnuget-packageのアップグレード後に発生する可能性があります。
Views\Web.config
ファイルを更新します。
<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>
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
VS2013、MVC 5.2.2.0、Web Api 2を使用しています。次のセクションのすべてのバージョンを2.0.0.から.0.0.に変更しました。 Web.configプロジェクトのViewフォルダー内にあります。
<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>
そして問題は解決されます。ビンゴ!!
この問題に2セントを追加するだけです。
私にとってこのエラーの原因は、他のすべてがSystem.Web.WebPages.Razor, Version=2.0.0.0
を使用しているときにViews folder web.configが3.0.0.0
を参照していたことであることがわかりました
Nuget-packageのアップグレードがこのフォルダーをどうにかして説明しなかったようです。
上記のすべての方法を試してみましたが、プロジェクトフォルダーの直下にあるweb.configに次の行を挿入するまで、問題は解決しませんでした。
<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>
Route Debuggerでこれを取得した場合は、Route Debuggerのエリアの下のViewsフォルダーでweb.configを更新する必要があります。
私の場合、VSがMVC 5へのアップグレード時に更新したライブサーバー上のWeb.configも更新することでこれを解決しました。