[asp.net-mvc] 사이트가 asp.net에서 작동을 중지했습니다. System.Web.WebPages.Razor.Configuration.HostSection을 캐스팅 할 수 없습니다.

서버에 이와 같은 문제가 있습니다.

[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로 업데이트합니다.

이제 작동합니다 🙂