2014-04-01 43 views
145

我收到以下錯誤:[A] System.Web.WebPages.Razor.Configuration.HostSection不能轉換爲...的web.config問題

[A]System.Web.WebPages.Razor.Configuration.HostSection cannot be cast to [B]System.Web.WebPages.Razor.Configuration.HostSection. Type A originates from 'System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' in the context 'Default' at location 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Web.WebPages.Razor\v4.0_2.0.0.0__31bf3856ad364e35\System.Web.WebPages.Razor.dll'. Type B originates from 'System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' in the context 'Default' at location 'C:\Users\MyName\AppData\Local\Temp\Temporary ASP.NET Files\root\63e7ff36\a1cb775d\assembly\dl3\8f568c18\9b7ddacf_d04dcf01\System.Web.WebPages.Razor.dll'.

我已搜查翻過計算器類似的問題我用他們的解決方案,但它似乎並沒有解決我遇到的問題。

它突然發生,我只是按下乾淨的解決方案,這個錯誤彈出。我也開始在解決方案上使用nuget包恢復。我也更新了我的軟件包(使用Update-package),因此其中一個可能與此問題有關。

回答

40

此錯誤的原因是引用System.Web.WebPages.Razor版本= 2.0.0.0而不是3.0.0.0的視圖文件夾中的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

+5

它聽起來不像一個修復,而是解決了我的問題。某些項目可能僅取決於mvc4 – stenly

+12

特別是,它看起來像是在「更新視圖文件夾下的web.config文件」部分中發生此錯誤的修復程序。它似乎從MVC4更新 - >與NuGet的MVC5不會自動更新視圖/ Web.config中的版本號。 – Tyler

+0

感謝您的鏈接!如果NuGet更新至少可以顯示指向該頁面的鏈接,那本來是很不錯的...... – Jedidja

0

在我的情況,我也通過更新的Web.config在現場解決了這個服務器,升級到MVC後VS已經更新5

94

只需將我的兩分錢添加到此問題。

我發現,這個錯誤對我的原因是,views文件夾 web.config文件中引用System.Web.WebPages.Razor, Version=2.0.0.0一切使用3.0.0.0

時似乎的NuGet包升級沒有考慮這個文件夾不知何故。

+1

最簡單的解決方案! –

+0

這對我來說......錯過了隱藏在那裏的參考。 –

+0

這也是我的問題。允許我在不進行完整升級的情況下解決問題。感謝Niclas! –

248

我使用VS2013,MVC 5.2.2.0,網絡API 2.我剛剛換了所有版本的2.0.0.0Web.config中的以下部分所在內的3.0.0.0查看我的項目文件夾。

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

而且問題得到解決。 BINGO !!

+6

這爲我做了這份工作。謝謝! –

+0

避免儘快手動編輯配置。 – guneysus

+1

這爲我解決了它。我將一個webforms應用程序轉換爲MVC5。 – Ray

3

如果你使用Route Debugger得到了這個,那麼你需要在Route Debugger區域下的Views文件夾中更新web.config。

+0

救生員。謝謝。 – 6footunder

+0

請你澄清一下。 – Si8

+0

救了我一天! –

7

嘗試了上述所有方法,直到我在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>