网站停止在asp.net System.Web.WebPages.Razor.Configuration.HostSection工作不能转换为
我在服务器上有这样的问题
[A] System.Web.WebPages.Razor.Configuration.HostSection不能转换为[B] System.Web.WebPages.Razor.Configuration.HostSection。 typesA来源于位于“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”。 typesB来源于'System.Web.WebPages.Razor,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35',位置为'C:\ Windows \ Microsoft.Net \ assembly \ GAC_MSIL \ System .Web.WebPages.Razor \ v4.0_1.0.0.0__31bf3856ad364e35 \ System.Web.WebPages.Razor.dll”。
说明:执行当前Web请求期间发生未处理的exception。 请查看堆栈跟踪,了解有关错误的更多信息以及源代码的位置。
exception详细信息:System.InvalidCastException:[A] System.Web.WebPages.Razor.Configuration.HostSection不能转换为[B] System.Web.WebPages.Razor.Configuration.HostSection。 typesA来源于位于“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”。 typesB来源于'System.Web.WebPages.Razor,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35',位置为'C:\ Windows \ Microsoft.Net \ assembly \ GAC_MSIL \ System .Web.WebPages.Razor \ v4.0_1.0.0.0__31bf3856ad364e35 \ System.Web.WebPages.Razor.dll”。
源错误:
我在serer和我的电脑上安装了MVC 3。 我已经尝试用15天的代码库replace它,但同样的问题存在。
现在我想解决它。 做一个人知道如何解决它。
在根Web.config中确保assemblyBinding包含程序集“System.Web.WebPages.Razor”和“System.Web.Mvc”的正确版本。 检查他们的实际存在以及我的“System.Web.WebPages.Razor”程序集标记丢失造成的错误。 在编写本文的时候,我的汇编版本分别设置为3.0和5.0,并进行了完整的NuGet更新。 代码应该如下所示。 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。
我确定我的引用是同步的(使用新创build的mvc5应用程序),相应地更新了web.config文件,但仍然无法正常工作。 它终于工作,当我改变我的web.config文件( INSIDE的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(快速或本地),清理解决scheme,build立和运行。
以防万一伊恩的答案是不够的(和程序集正确,但铸造仍然是错误的),你可能没有更新<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
)
伊恩的解决scheme在一个项目中工作,但对于其他人,我需要在如何升级到MVC 5和Web API 2中更完整的信息
当你为MVC 4开发时,这个问题是非常普遍的,然后突然你安装了一个新的版本的包,所以它打破了整个应用程序。
只有解决这个问题的方法是将整个应用程序升级到较新的版本,或者安装与您的应用程序兼容的旧版软件包
问题:
[A] System.Web.WebPages.Razor.Configuration.HostSection不能转换为[B] System.Web.WebPages.Razor.Configuration.HostSection。 typesA来源于'System.Web.WebPages.Razor,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35',位置为'C:\ Windows \ Microsoft.Net \ assembly \ GAC_MSIL \ System .Web.WebPages.Razor \ v4.0_2.0.0.0__31bf3856ad364e35 \ System.Web.WebPages.Razor.dll”。 typesB来源于位于“C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319”上下文“默认”中的“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'。
鉴别:
错误是与您的项目的configuration文件,即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
你不需要redirect,因为它会使事情变得复杂。
我发现了一个问题和解决scheme。
1我将我的代码定位到4.0,然后上传代码,它的工作。 在此之前,我也更新我的代码到asp.net MVC 4。
现在是工作:)
打开您的系统中的两个dll文件位置将您的文件位置中的一个dll复制到另一个
并尝试运行该项目。
另一种解决这个问题的方法是,不必更新引用
<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="3.0.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Web.Pages.Razor" publicKeyToken="31bf3856ad364e35" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-3.2.0.0" newVersion="1.0.0.0" /> </dependentAssembly> </assemblyBinding> </runtime>