Joe*_*Joe 12 razor entity-framework-6 asp.net-mvc-5
我正在尝试将项目从MVC 4/EF 5升级到MVC 5/EF 6.我将框架从4.5更新到4.5.1然后从NuGet更新了解决方案MVC(4.0.30506.0到5.1.1)和EntityFramework (5至6.1.1).这引起了Razor依赖(2.0.30506.0到3.1.1)和WebPages(2.0.30506.0到3.1.1).我编辑了Project and Views文件夹web.config以反映更改并从csproj中删除了GUID.
当我在调试中运行该站点时,在 - section name ="host"type ="System.Web.WebPages.Razor.Configuration.HostSection - line"上加载Views文件夹web.config时出错.
"为system.web.webPages.razor/host创建配置节处理程序时出错:无法加载文件或程序集'System.Web.WebPages.Razor,Version = 3.1.1"
它在前一行(System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup)或根web.config中的Razor引用没有问题.不幸的是,堆栈跟踪不识别调用程序集.
调用程序集:(未知).
所有相关文件都包含在下面.
有谁知道问题是什么,更重要的是如何解决它.我只更新了最基本的NuGet包:MVC和实体框架.
packages.config:
…
<package id="EntityFramework" version="6.1.0" targetFramework="net451" />
<package id="jQuery" version="2.0.2" targetFramework="net45" />
<package id="jQuery.UI.Combined" version="1.10.3" targetFramework="net45" />
<package id="jQuery.Validation" version="1.11.1" targetFramework="net45" />
<package id="knockoutjs" version="2.2.1" targetFramework="net45" />
<package id="Microsoft.AspNet.Mvc" version="5.1.1" targetFramework="net451" />
<package id="Microsoft.AspNet.Mvc.FixedDisplayModes" version="5.0.0" targetFramework="net451" />
<package id="Microsoft.AspNet.Razor" version="3.1.1" targetFramework="net451" />
<package id="Microsoft.AspNet.Web.Optimization" version="1.0.0" targetFramework="net45" />
…
<package id="Microsoft.AspNet.WebPages" version="3.1.1" targetFramework="net451" />
<!-- oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" -->
…
web.config: root
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
…
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-3.1.1" newVersion="3.1.1" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-5.1.1" newVersion="5.1.1" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.1.1" newVersion="3.1.1" /> </dependentAssembly>
web.config: Views folder
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.1.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.1.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.1.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> </sectionGroup>
…
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.1.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
…
<pages
validateRequest="false"
pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=5.1.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=5.1.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=5.1.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<controls>
<add assembly="System.Web.Mvc, Version=5.1.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
</controls>
</pages>
ERROR PAGE:
Run Code Online (Sandbox Code Playgroud)
配置错误说明:处理为此请求提供服务所需的配置文件时发生错误.请查看下面的具体错误详细信息并相应地修改配置文件.
分析器错误消息:为system.web.webPages.razor/host创建配置节处理程序时发生错误:无法加载文件或程序集'System.Web.WebPages.Razor,Version = 3.1.1,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(HRESULT异常:0x80131040)
来源错误:
Line 4: <configSections>
Line 5: <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.1.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
Line 6: <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.1.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
Line 7: <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.1.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
Line 8: </sectionGroup>
Run Code Online (Sandbox Code Playgroud)
源文件:C:\ Project\views\web.config行:6
程序集加载跟踪:以下信息有助于确定无法加载程序集"System.Web.WebPages.Razor,Version = 3.1.1,Culture = neutral,PublicKeyToken = 31bf3856ad364e35"的原因.
===预绑定状态信息===日志:DisplayName = System.Web.WebPages.Razor,Version = 3.1.1,Culture = neutral,PublicKeyToken = 31bf3856ad364e35(Partial)WRN:为程序集提供了部分绑定信息:警告:程序集名称:System.Web.WebPages.Razor,Version = 3.1.1,Culture = neutral,PublicKeyToken = 31bf3856ad364e35 | 域ID:4 WRN:仅提供部分程序集显示名称时发生部分绑定.警告:这可能导致装订器装入错误的装配.警告:建议为程序集提供完全指定的文本标识,即WRN:由简单名称,版本,区域性和公钥标记组成.警告:有关此问题的更多信息和常见解决方案,请参阅白皮书http://go.microsoft.com/fwlink/?LinkId=109270.日志:Appbase = file:/// C:\ Project/LOG:初始PrivatePath = C:\ Project\bin
日志:此绑定在默认加载上下文中启动.日志:使用应用程序配置文件:C:\ Project\web.config日志:使用主机配置文件:C:\ Users\xxx\Documents\IISExpress\config\aspnet.config日志:使用C:\ Windows \中的计算机配置文件Microsoft.NET \框架\ v4.0.30319\CONFIG\machine.config中.日志:此时策略未应用于引用(私有,自定义,部分或基于位置的程序集绑定).日志:尝试下载新的URL文件:/// C:/ Users/xxx/AppData/Local/Temp/Temporary ASP.NET Files/root/898b17f9/848c1fdf/System.Web.WebPages.Razor.DLL.日志:尝试下载新的URL文件:/// C:/ Users/xxx/AppData/Local/Temp/Temporary ASP.NET Files/root/898b17f9/848c1fdf/System.Web.WebPages.Razor/System.Web.WebPages .Razor.DLL.日志:尝试下载新的URL文件:/// C:\ Project /bin/System.Web.WebPages.Razor.DLL.警告:比较程序集名称导致不匹配:次要版本错误:无法完成程序集的设置(hr = 0x80131040).探测终止.
版本信息:Microsoft .NET Framework版本:4.0.30319; ASP.NET版本:4.0.30319.18446
我能够通过更新我的视图文件夹的 web.config 中的 configSection 来解决这个问题,以匹配我在我的 packages.config 中的内容。在我的例子中,我需要将 Razor 的版本调整为 3.2.7
-- WEB.CONFIG
<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.2.7.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.2.7.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.2.7.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
</configSections>
Run Code Online (Sandbox Code Playgroud)
-- 包.CONFIG
<package id="Microsoft.AspNet.Mvc" version="5.2.7" targetFramework="net45" />
<package id="Microsoft.AspNet.Razor" version="3.2.7" targetFramework="net45" />
Run Code Online (Sandbox Code Playgroud)
决定试图弄清楚这些噩梦般的依赖是不值得的.我恢复了项目的备份,并从包管理器控制台(PMC)手动更新了MVC和EntityFramework,而旧版本没有调用Razor 3.1.1依赖项.
安装包Microsoft.AspNet.Mvc -Version 5.0.0
Install-Package entityframework -Version 6.0.0
注意:如果您使用DbContext.EntityState方法,它已从System.Data移动到System.Data.Entity,请根据需要更新您的使用.
如果你有简单会员资格,你需要安装Microsoft.AspNet.WebPages.WebData(参见ASP.NET MVC 5与WebMatrix SimpleMembershipProvider不兼容吗?),如果项目中有OAuth(MVC4模板将OAuth安装到项目中,我没有使用它,所以我能够删除它.如果你正在使用它,你有更多的工作需要你)你将不得不卸载OAUTH(WebData与OAUTH存在依赖性问题).
从NuGet卸载Microsoft WebPages OAuth库
从PMC安装包Microsoft.AspNet.WebPages.WebData
请务必根据您的项目执行以下步骤:升级MVC 4到5 http://www.asp.net/mvc/tutorials/mvc-5/how-to-upgrade-an-aspnet-mvc-4-and -Web-API项目到ASPNET-MVC-5和Web的API-2
- 要么 -
如果您想尝试更新所有包,请按以下步骤操作:
从NuGet卸载Microsoft WebPages OAuth库(如果使用SimpleMembership,请参见上文)
不得不单独更新:'Microsoft ASP.NET Web API客户端库和核心库'和'System.Spatial for OData'
全部更新
从PMC安装包Microsoft.AspNet.WebPages.WebData(SimpleMembership,见上文)
(参见上面的DbContext.EntityState)
(web.config-root,add key ="webpages:Version"value ="3.0.0.0";请参阅上面的升级MVC 4到5;其他更改是自动进行的)
(视图web.config需要手动更改)
(然后能够成功构建和打开项目,但是当它访问数据库时需要更新.(来自PMC更新 - 数据库.它在"CREATE INDEX [xxxxxxx] ON [dbo] .xxxxxxxx""System.Data上失败了. SqlClient.SqlException(0x80131904):操作失败,因为表'dbo.xxxxxxx'上已经存在名称为'xxxxxxxx'的索引或统计信息.")但我能够成功访问数据库)
| 归档时间: |
|
| 查看次数: |
24155 次 |
| 最近记录: |