最近在研究微软的新平台Vs2012,做好的系统在发布到服务器时纠结了。本地环境是win7的,一切运行正常,发布也很顺利。可是悲催的服务器还是windows 2003的,.net framewrok4.5已经不再支持2003系统了。找了好久终于找到解决办法。把现象和解决办法记录如下:
问题现象
在开发环境中(Win7 + MVC4 + EF5)系统能正常运行。
发布到Server2003后,访问系统报如下错误:
Method not found: 'Void System.Data.Objects.ObjectContextOptions.set_UseConsistentNullReferenceBehavior(Boolean)'.
原因分析
在开发环境中(Win7)已安装.net framewrok4.5, EF5使用的是与framework 4.5配套的版本。
但server2003不支持framework4.5
解决办法
1,把项目的Target framework设置为4.0
2,引入Ef5 4.0版本的dll,在packagesEntityFramework.5.0.0文件夹下
通过Library Package Manager Console加载EF5.0后,会在工程目录下生成EntityFramework.5.0.0文件夹。
它的lib下分别有net40,net45文件夹。
3.还要注意修改web.config中entityFramework的配置
<!--发布在2003上的时候需要做这个设置-->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
<!--发布在2003上的时候需要做这个设置-->
来源:http://hi.baidu.com/btc022003/item/e5b9a02a4b80fd50c38d599d