Asp.net mvc 3 降级mvc项目时出现razor版本错误
我使用visual studio express 2012在mvc4中的一个站点上工作。由于我不想进入这里的原因,我不得不将项目移回mvc3 vs 2010。我已经把所有的代码移到一边进行编译,但是当我运行这个项目时,我得到了以下错误。我不知道在这里该做什么。有人猜猜看吗?谢谢 [A] 无法强制转换System.Web.WebPages.Razor.Configuration.HostSection 至[B]System.Web.WebPages.Razor.Configuration.HostSection。A型 源自“System.Web.WebPages.Razor,版本=2.0.0.0”, 区域性=中性,PublicKeyToken=31bf3856ad364e35'在上下文中 位置处的“默认值” 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Web.WebPages.Razor\v4.0_2.0.0_uuu31BF3856AD364E35\System.Web.WebPages.Razor.dll'。 类型B源于'System.Web.WebPages.Razor,版本=1.0.0.0, 区域性=中性,PublicKeyToken=31bf3856ad364e35'在上下文中 位置处的“默认值” 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Web.WebPages.Razor\v4.0_1.0.0_uuu31BF3856AD364E35\System.Web.WebPages.Razor.dll' 描述:在执行过程中发生未处理的异常 当前的web请求。请查看堆栈跟踪以了解更多信息 有关错误的信息及其在代码中的来源 异常详细信息:System.InvalidCastException:[A]无法强制转换System.Web.WebPages.Razor.Configuration.HostSection 至[B]System.Web.WebPages.Razor.Configuration.HostSection。A型 源自“System.Web.WebPages.Razor,版本=2.0.0.0”, 区域性=中性,PublicKeyToken=31bf3856ad364e35'在上下文中 位置处的“默认值” 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Web.WebPages.Razor\v4.0_2.0.0_uuu31BF3856AD364E35\System.Web.WebPages.Razor.dll'。 类型B源于'System.Web.WebPages.Razor,版本=1.0.0.0, 区域性=中性,PublicKeyToken=31bf3856ad364e35'在上下文中 位置处的“默认值” 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Web.WebPages.Razor\v4.0_1.0.0_uuu31BF3856AD364E35\System.Web.WebPages.Razor.dll' 在我的根web.config中,我有以下内容Asp.net mvc 3 降级mvc项目时出现razor版本错误,asp.net-mvc-3,razor,asp.net-mvc-4,Asp.net Mvc 3,Razor,Asp.net Mvc 4,我使用visual studio express 2012在mvc4中的一个站点上工作。由于我不想进入这里的原因,我不得不将项目移回mvc3 vs 2010。我已经把所有的代码移到一边进行编译,但是当我运行这个项目时,我得到了以下错误。我不知道在这里该做什么。有人猜猜看吗?谢谢 [A] 无法强制转换System.Web.WebPages.Razor.Configuration.HostSection 至[B]System.Web.WebPages.Razor.Configuration.Host
<appSettings>
<add key="webpages:Version" value="1.0.0.0" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
然后在视图文件夹中的web.config中
<appSettings>
<add key="webpages:Enabled" value="false" />
</appSettings>
没有看到您的web.config,我不确定这是否正确。但此错误消息指出
webpages:config
设置不正确。因此,请尝试以下方法:
在web.config中更改以下内容
<appSettings>
...
<add key="webpages:Version" value="2.0.0.0" />
....
</appSettings>
...
....
到
....
....
更新
此错误的另一个可能原因是MVC4默认添加的绑定重定向,即
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
请从web.config中删除上述内容,并将其替换为
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
Penfold,谢谢你的帮助。虽然你的两个解决方案都不是解决方案,但它们为我指明了正确的方向。我的视图的web.config文件中有几个块是原始mvc4的遗留部分,需要更新为mvc3。我启动了一个新的mvc3项目,并复制了默认值,它成功了。这是我改变的
<configSections>
<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>
</configSections>
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Optimization"/>
<add namespace="System.Web.Routing" />
</namespaces>
</pages>
</system.web.webPages.razor>
我把上面的改成了这个
<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
</configSections>
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
</namespaces>
</pages>
</system.web.webPages.razor>
我已经用您提到的web.config代码更新了我的问题。在我发布之前,我确实发现这是一个可能的解决方案,但它似乎对我不起作用。我应该把它放在根目录的web.config中,还是放在views目录下的web.config中?事实上,我两个都试过了,但都不起作用。好吧,看来我的解决方案对你不起作用。另一个可能的问题区域可能是运行时部分。我将用另一种可能的解决方案更新我的答案。
<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
</configSections>
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
</namespaces>
</pages>
</system.web.webPages.razor>