我正在使用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,Version = 2.0.0.0, 在上下文中,Culture = neutral,PublicKeyToken = 31bf3856ad364e35' 位置处的“默认” 'C:\ WINDOWS \ Microsoft.Net \装配\ GAC_MSIL \ System.Web.WebPages.Razor \ v4.0_2.0.0.0__31bf3856ad364e35 \ System.Web.WebPages.Razor.dll'。 类型B源自'System.Web.WebPages.Razor,Version = 1.0.0.0, 在上下文中,Culture = neutral,PublicKeyToken = 31bf3856ad364e35' 位置处的“默认” 'C:\的Windows \ Microsoft.Net \组件\ GAC_MSIL \ System.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型 源自'System.Web.WebPages.Razor,Version = 2.0.0.0, 在上下文中,Culture = neutral,PublicKeyToken = 31bf3856ad364e35' 位置处的“默认” 'C:\ WINDOWS \ Microsoft.Net \装配\ GAC_MSIL \ System.Web.WebPages.Razor \ v4.0_2.0.0.0__31bf3856ad364e35 \ System.Web.WebPages.Razor.dll'。 类型B源自'System.Web.WebPages.Razor,Version = 1.0.0.0, 在上下文中,Culture = neutral,PublicKeyToken = 31bf3856ad364e35' 位置处的“默认” 'C:\的Windows \ Microsoft.Net \组件\ GAC_MSIL \ System.Web.WebPages.Razor \ v4.0_1.0.0.0__31bf3856ad364e35 \ System.Web.WebPages.Razor.dll'
在我的root web.config中,我有以下内容......
<appSettings>
<add key="webpages:Version" value="1.0.0.0" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
然后在views文件夹中的web.config中我有...
<appSettings>
<add key="webpages:Enabled" value="false" />
</appSettings>
答案 0 :(得分:0)
没有看到你的web.config我不确定这是否正确。但是此错误消息指向webpages:config
设置不正确。因此,请尝试以下方法:
在您的web.config中更改以下内容
<appSettings>
...
<add key="webpages:Version" value="2.0.0.0" />
....
</appSettings>
到
<appSettings>
....
<add key="webpages:Version" value="1.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>
答案 1 :(得分:0)
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>