asp.net mvc - 사이트가 asp.net System.Web.WebPages.Razor.Configuration.HostSection에서 작동을 멈추었습니다.




asp.net-mvc asp.net-mvc-4 (6)

Ian의 솔루션은 하나의 프로젝트에서 작동했지만 다른 MVC 5 및 Web API 2로 업그레이드하는 방법에 대한 자세한 정보가 필요합니다.

나는 서버에서 이와 같은 문제가있다.

[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.WebPublic.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을 serer와 내 컴퓨터에 설치했습니다. 나는 15 일 된 코드베이스로 대체하려고했지만 동일한 문제가있다.

지금 나는 그것을 풀고 싶다. 누군가 내가 그것을 고칠 수있는 방법을 알고 있습니다.


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 )


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

문제:

[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'의 컨텍스트 '기본'컨텍스트에서 'System.Web.WebPages.Razor, Version = 3.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' \ 임시 ASP.NET 파일 \ 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

리다이렉션을 할 필요가 없기 때문에 리디렉션이 복잡해집니다.


시스템에서 두 dll 파일 위치를 열고 파일 위치에있는 dll 중 하나를 다른 위치로 복사하십시오.
프로젝트를 실행 해보십시오.


이 문제는 MVC 4 용으로 개발할 때 일반적으로 발생합니다. 그런 다음 새 버전에서 제공되는 패키지를 설치하면 전체 응용 프로그램이 중단됩니다.

이러한 문제에 대한 해결책은 전체 응용 프로그램을 최신 버전으로 업그레이드하거나 응용 프로그램과 호환되는 이전 패키지를 설치하는 것입니다





c#-5.0