2013-11-13 8 views
54

Я работал над решением MVC 4, и я пытался обновить его до MVC 5. Я выполнил шаги, описанные в here.Razor 2 to Razor 3 MVC 5

Я последовал за ним, и теперь каждый раз, когда я бегу MVC приложение, это дает мне сообщение об ошибке:

[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\User\AppData\Local\Temp\Temporary ASP.NET 
Files\root\665ac028\de53a189\assembly\dl3\c2c0a4b5\56e8099e_40e0ce01\System.Web.WebPages.Razor.dll'. 

Кто-нибудь знает, как это могло бы возникла? или как это можно решить? Я огляделся до сих пор? Я пробовал сменить файлы web.config, безрезультатно ...

+1

Просто FYI - если вы собираетесь задавать вопросы [mass-retag] (http://stackoverflow.com/review/spected-edits/8038449), возможно, лучше сначала его вывести на [Мета], чем засорение предлагаемой очереди редактирования с помощью изменений тега – LittleBobbyTables

+0

Устранить эту проблему, выполнив шаги в ответ «Дима». Дополнение к этому обновлению сборки GAC с новой dll, System.Web.WebPages.Razor, Version = 3.0.0.0, Как обновить сборку GAC здесь. Https://msdn.microsoft.com/en-us/library/dkkx7f79(v=vs.110).aspx // Rukshan Samathilaka –

ответ

106

В ваших Web.config (-s) убедитесь, что assemblyBinding содержит правильную версию для сборки System.Web.WebPages.Razor и System.Web.Mvc.

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
    <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> 

    <dependentAssembly> 
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> 
    <bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="5.0.0.0" /> 
    </dependentAssembly> 
</assemblyBinding> 

И убедитесь, что бритва sectionGroup в 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> 
+0

в переадресации привязки, MVC имеет 0-5, новую версию 5 и бритву имеет 1-3 новую версию 3 –

+0

@DylanCorriveau update reply – Dima

+1

Вы были верны. Хотя я перезапустил приложение (я был не очень далек в нем, поэтому я просто сделал проект MVC 5 и портировал его), я заметил, что проблема в том, что во второй веб-конфигурации после факта (внутри внутри представлений) –

0

Похоже, у вас все еще есть ссылка на dll Razor 2.0.

Проверьте свойства ссылок на проекты - особенно «Использовать конкретную версию».

+0

Я использую «использовать определенную версию», но ее также установлен в 3 ... –

1

проверить версию в web.config. Если он снова дает ошибку, попробуйте очистить решение и перестроить его. Также проверьте папку проекта Bin, удалите старые ссылки из папки bin и восстановите решение проекта.

Смежные вопросы