今天把 后台的mvc 升级到了mvc5和ef6 .出错很正常. 下面是一些错误信息.
[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”(在上下文“Default”中的“C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Web.WebPages.Razor\v4.0_2.0.0.0__31bf3856ad364e35\System.Web.WebPages.Razor.dll”位置处)。类型 B 源自“System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”(在上下文“Default”中的“C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\0cb2ceb6\da7c1884\assembly\dl3\26f5a00a\65524b06_b2d3ce01\System.Web.WebPages.Razor.dll”位置处)。
这个是升级后. 当前版本和配置文件版本不一致.
要在view的config里面改. 看下图.要把2.0.,0.0 改成3.0.0.0
第二个错
找不到方法:“System.Data.Objects.ObjectContext System.Data.Entity.Infrastructure.IObjectContextAdapter.get_ObjectContext()”。
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.MissingMethodException: 找不到方法:“System.Data.Objects.ObjectContext System.Data.Entity.Infrastructure.IObjectContextAdapter.get_ObjectContext()”。
源错误:
行 47: }
行 48:
行 49: if (base.ValidateUser(username, password))
行 50: {
行 51: return true;
源文件: c:\web\eudic_web\Eudic.LibWeb\Membership\EudicMembershipProvider.cs 行: 49
堆栈跟踪:
[MissingMethodException: 找不到方法:“System.Data.Objects.ObjectContext System.Data.Entity.Infrastructure.IObjectContextAdapter.get_ObjectContext()”。]
System.Web.Providers.ModelHelper.EnsureDatabaseCreated(DbContext db) +0
System.Web.Providers.DefaultMembershipProvider.ValidateUser(String username, String password) +207
这个.删掉system.data.entity .因为EF6删了这个命名空间合并到了EF里面.删掉.重新引用下. 就行了
如果次方法不行.(其实我这个也不行)
第二个方法:
Microsoft.AspNet.Providers.Core
v. 1.2 因为你升级的时候.把这个升级萎了1.2
但是如果本地用了 LocaDb 那么就出错.
怎办.
换回1.1版本的
Install-Package Microsoft.AspNet.Providers.Core -Version 1.1
解决方法地址: