MVC项目迁移的一些配置问题(转)

Posted 团子先生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MVC项目迁移的一些配置问题(转)相关的知识,希望对你有一定的参考价值。

本文转自:http://www.th7.cn/Program/net/201404/192102.shtml

 

随着VS版本和.NET MVC版本、EF的版本的不断更新,虽然很多功能随着版本的提升而更完善,但对于旧版本开发的软件就有点悲催了,或许很多开发者都遇到类似的问题!

最近有一个项目是用.NET MVC3+EXT.NET MVC开发的(当时使用本博客中Ext.Net MVC 配置(2)进行配置的),现在要移植到MVC4的环境中,就遇到了各种各样的问题,都快奔溃了,现在就来总结下:

1、ASP.NET Web Pages版本问题

调试后浏览器提示: 

检测到 ASP.NET Web Pages 的冲突版本: 指定的版本为“1.0.0.0”,而 bin 中的版本为“2.0.0.0”。要继续操作,请删除应用程序 bin 目录中的文件,或者删除 web.config 中的版本指定。

 

解决:

配置项目下的Web.config

<appSettings>
<add key="webpages:Version" value="2.0.0.0" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusivejavascriptEnabled" value="true" />
</appSettings>

 

2、System.Web.WebPages.Razor.Configuration.HostSection版本问题

调试后浏览器提示:

[A]System.Web.WebPages.Razor.Configuration.HostSection 无法强制转换为 [B]System.Web.WebPages.Razor.Configuration.HostSection。类型 A 源自“System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”(在上下文“Default”中的“C:/Windows /Microsoft.Net/assembly/GAC_MSIL/System.Web.WebPages.Razor /v4.0_1.0.0.0__31bf3856ad364e35/System.Web.WebPages.Razor.dll”位置处)。类型 B 源自“System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”(在上下文“Default”中的“C:/Windows /Microsoft.Net/assembly/GAC_MSIL/System.Web.WebPages.Razor /v4.0_2.0.0.0__31bf3856ad364e35/System.Web.WebPages.Razor.dll”位置处)。

解决: 

配置view中的Web.config 

<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" />

 

3、System.Web.WebPages.Razor.Configuration.RazorPagesSection

版本问题

调试后浏览器提示:

[A]System.Web.WebPages.Razor.Configuration.RazorPagesSection 无法强制转换为 [B]System.Web.WebPages.Razor.Configuration.RazorPagesSection。类型 A 源自“System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”(在上下文“Default”中的“C:/Windows /Microsoft.Net/assembly/GAC_MSIL/System.Web.WebPages.Razor /v4.0_1.0.0.0__31bf3856ad364e35/System.Web.WebPages.Razor.dll”位置处)。类型 B 源自“System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”(在上下文“Default”中的“C:/Windows /Microsoft.Net/assembly/GAC_MSIL/System.Web.WebPages.Razor /v4.0_2.0.0.0__31bf3856ad364e35/System.Web.WebPages.Razor.dll”位置处)。

解决:

配置view中的Web.config 

<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" />

 

4、System.Web.Mvc.MvcWebRazorHostFactory

版本问题

类型为“System.Web.Mvc.MvcWebRazorHostFactory”的表达式不能用于返回类型“System.Web.WebPages.Razor.WebRazorHostFactory”

解决:

配置项目下的Web.config

<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<!--<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>-->
<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>
</assemblyBinding>

</runtime>

注:蓝色的为原来的配置,加上红色这段就不会报上面的错误了!

 以上的版本问题只要把红色部分的配置改为Bin文件中对应DLL的版本数就可以了。

以上的问题是mvc3的配置移植到mvc4时出现的错误,随着VS2013和mvc5的降临,可能会出现更多的问题,以后遇到了再做补充。

以上是关于MVC项目迁移的一些配置问题(转)的主要内容,如果未能解决你的问题,请参考以下文章

Asp.Net MVC及Web API框架配置会碰到的几个问题及解决方案 [转]

从 ASP.NET MVC 迁移到 ASP.NET Core MVC

如何使用 EF Core 代码优先迁移为 ASP.NET Core MVC 配置 N 层架构

Spring3 MVC 注解---注解基本配置及@controller和 @RequestMapping 常用解释(转)

Spring MVC 遇到的一点点问题(转)

SecureCRT 迁移到新环境,导出配置文件目录 转