서버에 이와 같은 문제가 있습니다.
[A] System.Web.WebPages.Razor.Configuration.HostSection은 [B] System.Web.WebPages.Razor.Configuration.HostSection으로 캐스팅 할 수 없습니다. 유형 A는 ‘C : \ Windows \ Microsoft.Net \ assembly \ GAC_MSIL \ System’위치의 ‘Default’컨텍스트에서 ‘System.Web.WebPages.Razor, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35’에서 시작됩니다. .Web.WebPages.Razor \ v4.0_2.0.0.0__31bf3856ad364e35 \ System.Web.WebPages.Razor.dll ‘. 유형 B는 ‘C : \ Windows \ Microsoft.Net \ assembly \ GAC_MSIL \ System’위치의 컨텍스트 ‘Default’에있는 ‘System.Web.WebPages.Razor, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35’에서 시작됩니다. .Web.WebPages.Razor \ v4.0_1.0.0.0__31bf3856ad364e35 \ System.Web.WebPages.Razor.dll ‘.
설명 : 현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 발생했습니다. 오류 및 코드에서 오류가 발생한 위치에 대한 자세한 정보는 스택 추적을 검토하십시오.
예외 정보 : System.InvalidCastException : [A] System.Web.WebPages.Razor.Configuration.HostSection은 [B] System.Web.WebPages.Razor.Configuration.HostSection으로 캐스팅 할 수 없습니다. 유형 A는 ‘C : \ Windows \ Microsoft.Net \ assembly \ GAC_MSIL \ System’위치의 ‘Default’컨텍스트에서 ‘System.Web.WebPages.Razor, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35’에서 시작됩니다. .Web.WebPages.Razor \ v4.0_2.0.0.0__31bf3856ad364e35 \ System.Web.WebPages.Razor.dll ‘. 유형 B는 ‘C : \ Windows \ Microsoft.Net \ assembly \ GAC_MSIL \ System’위치의 컨텍스트 ‘Default’에있는 ‘System.Web.WebPages.Razor, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35’에서 시작됩니다. .Web.WebPages.Razor \ v4.0_1.0.0.0__31bf3856ad364e35 \ System.Web.WebPages.Razor.dll ‘.
소스 오류 :
서버와 컴퓨터에 MVC 3을 설치했습니다. 15 일 된 코드베이스로 교체하려고 시도했지만 동일한 문제가 있습니다.
이제 그것을 해결하고 싶습니다. 누군가 내가 어떻게 고칠 수 있는지 알고 있습니까?
답변
루트 Web.config에서 assemblyBinding에 “System.Web.WebPages.Razor”및 “System.Web.Mvc”어셈블리에 대한 적절한 버전이 포함되어 있는지 확인합니다. 실제 존재 여부와 “System.Web.WebPages.Razor”어셈블리 태그가 누락되어 오류가 발생했는지 확인합니다. 이 글을 쓰는 시점에 전체 NuGet 업데이트로 어셈블리 버전을 각각 3.0과 5.0으로 설정했습니다. 코드는 다음과 같아야합니다. publicKeyToken은 버전간에 동일하게 유지됩니다. 건배!
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<!--some more bidings-->
<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>
<!--some more bidings-->
</assemblyBinding>
답변
제 케이스는 mvc4에서 mvc5로 업그레이드되었습니다.
내 참조가 (새로 생성 된 mvc5 앱과) 동기화되어 있는지 확인하고 그에 따라 web.config 파일을 업데이트했지만 여전히 작동하지 않았습니다. 내 web.config 파일 ( INSIDE THE VIEWS 디렉토리 )을 다음에서 변경했을 때 마침내 작동했습니다 .
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
이에:
<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>
기억하세요 : iis (익스프레스 또는 네이티브) 중지, 솔루션 정리, 빌드 및 실행.
답변
ian의 답변이 충분하지 않은 경우 (어셈블리가 정확하지만 캐스팅이 여전히 잘못된 경우) <configSections>
아직 새 어셈블리를 반영하도록을 업데이트하지 않았을 가능성이 있습니다 . 어셈블리 부분도 System.Web.WebPages.Razor
라이브러리의 버전 3.0을 참조하는지 확인하십시오 . 예 :
<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>
( version=3.0.0
지금은 모두 참조 )
답변
Ian의 솔루션은 한 프로젝트에서 작동했지만 다른 프로젝트의 경우 MVC 5 및 Web API 2로 업그레이드하는 방법 에서 더 완전한 정보가 필요합니다.
답변
이 문제는 MVC 4 용으로 개발 한 다음 갑자기 새 버전에서 사용할 수있는 패키지를 설치하여 전체 응용 프로그램을 손상시킬 때 매우 일반적입니다.
이러한 문제에 대한 유일한 해결책은 전체 애플리케이션을 최신으로 업그레이드하거나 애플리케이션과 호환되는 이전 패키지를 설치하는 것입니다.
답변
문제:
[A] System.Web.WebPages.Razor.Configuration.HostSection은 [B] System.Web.WebPages.Razor.Configuration.HostSection으로 캐스팅 할 수 없습니다. 유형 A는 ‘C : \ Windows \ Microsoft.Net \ assembly \ GAC_MSIL \ System’위치의 ‘Default’컨텍스트에서 ‘System.Web.WebPages.Razor, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35’에서 시작됩니다. .Web.WebPages.Razor \ v4.0_2.0.0.0__31bf3856ad364e35 \ System.Web.WebPages.Razor.dll ‘. 유형 B는 ‘C : \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 위치의 컨텍스트’Default ‘에있는’System.Web.WebPages.Razor, Version = 3.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 ‘에서 시작됩니다. \ Temporary ASP.NET Files \ rbs.ceds.todomvcdemo \ 73d0b7c7 \ 46e3986d \ assembly \ dl3 \ 21020800 \ 101279fc_da94cf01 \ System.Web.WebPages.Razor.dll ‘.
신분증:
이 오류는 프로젝트의 구성 파일 (예 : web.config)에 있습니다.
여기에서 Razor 버전이 2.0.0.0으로 설정되어 있으며 프로젝트 2.0.0.0 버전을 사용할 수 없습니다.
해결책:
간단합니다. 버전을 2.0.0.0에서 3.0.0.0으로 변경하기 만하면됩니다.
type = “System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version = 3.0.0.0 type =”System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor , 버전 = 3.0.0.0
리디렉션을 넣을 필요가 없습니다. 그렇게하면 일이 복잡해집니다.
답변
문제와 해결책을 찾았습니다.
1 내 코드를 4.0으로 타겟팅 한 다음 코드를 업로드하면 작동합니다. 그 전에 코드를 asp.net MVC 4로 업데이트합니다.
이제 작동합니다 🙂