【发布时间】:2015-01-11 17:33:30
【问题描述】:
在 Azure Web 角色 (WS 2012 R2) 中执行 EF 6.1.2 代码优先迁移时会出现此问题。相同的迁移在本地运行良好,即使我将连接字符串指向 (Azure) Sql 数据库。
StackOverflowException 是由实体框架代码引发的,我的任何迁移的第一行都没有受到影响。
我尝试过以三种不同的方式运行迁移:
DbMigrator migrator = new DbMigrator(configuration);
migrator.Update(); // Here the exception is thrown
秒:
DbMigrator migrator = new DbMigrator(configuration);
pendingMigrations = migrator.GetPendingMigrations().ToList();
foreach (string pendingMigration in pendingMigrations)
{
migrator.Update(pendingMigration); // Here the exception is thrown
}
并使用 web.config:
<contexts>
<context type="Superb.WorkNextDoor.EFRepository.Context.WndDbContext, Superb.WorkNextDoor.EFRepository, Version=1.0.0.0, Culture=neutral">
<databaseInitializer type="System.Data.Entity.MigrateDatabaseToLatestVersion`2[[Superb.WorkNextDoor.EFRepository.Context.WndDbContext, Superb.WorkNextDoor.EFRepository], [Superb.WorkNextDoor.EFRepository.Migrations.Migrations.WndDbMigrationsConfiguration, Superb.WorkNextDoor.EFRepository.Migrations]], EntityFramework">
</databaseInitializer>
</context>
</contexts>
当我远程调试 Web 角色时,我在 Visual Studio 中看到 StackOverflowException。 Web 角色的 Windows 事件日志中记录了一个错误(日志信息在本文底部)。
我有两个迁移。我尝试从 PMC 运行第一个,从网络角色运行第二个,但没有运气。
我尝试在服务器上安装 .Net 4.5.2,将 VM 大小从 XS 更改为 S,并将 EF 降级到版本 6.1.1。没有任何效果。此外,我尝试从网络角色下载文件夹“E:\sites\0”到我的本地计算机,在 IIS 上安装应用程序并附加我的 VS 调试器,它不会抛出该异常。我的 Windows 8.1 和那个 Windows Server 2012 R2 之间肯定有一些不同。
我花了很多时间尝试不同的事情,但我不想放弃这一点,不得不从包管理器控制台执行我的迁移。
日志名称:应用程序来源:应用程序错误日期:
2015 年 1 月 11 日凌晨 3:21:42 事件 ID:1000 任务类别:(100) 级别:
错误关键字:经典用户:N/A 计算机:
RD0003FF508F5B 描述:错误的应用程序名称:w3wp.exe, 版本:8.5.9600.16384,时间戳:0x5215df96 错误模块名称: clr.dll,版本:4.0.30319.34014,时间戳:0x52e0b86c 异常 代码:0xc00000fd 故障偏移量:0x0000000000195499 故障进程 id: 0xc60 错误应用程序启动时间:0x01d02d4d77fdfb93 错误 应用程序路径:d:\windows\system32\inetsrv\w3wp.exe 错误模块 路径:D:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll 报告 id:f5e4d6dc-9940-11e4-80bd-0003ff508f5b 故障包全名: 错误的包相关应用程序 ID:事件 Xml:
1000 2 100 0x80000000000000 467 应用 RD0003FF508F5B w3wp.exe 8.5.9600.16384 5215df96 clr.dll 4.0.30319.34014 52e0b86c c00000fd 0000000000195499 c60 01d02d4d77fdfb93 d:\windows\system32\inetsrv\w3wp.exe D:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll f5e4d6dc-9940-11e4-80bd-0003ff508f5b
重现此错误的简单步骤:
- 下载此示例项目:http://www.asp.net/mvc/overview/getting-started/getting-started-with-ef-using-mvc/migrations-and-deployment-with-the-entity-framework-in-an-asp-net-mvc-application
- 向解决方案添加 CloudServiceProject 并将 Web 项目添加为 Web 角色
- 将其发布到 azure
- 浏览网站并转到学生选项卡(这会命中数据库,初始化程序会尝试执行迁移)。
- 同样如此。
【问题讨论】:
-
大量研究工作,大量相关信息,甚至是完全重现问题的方法。只有一个赞成票(我的)。疯狂的世界……
-
@GertArnold 是的:/ 奇怪的是以前没有人遇到过这个问题。我已经在 codeplex 上报告了它并被分配进行调查:https://entityframework.codeplex.com/workitem/2637
标签: entity-framework azure entity-framework-migrations stack-overflow