启用 EF 代码首次迁移后 Azure 网站出现内部服务器错误

Posted

技术标签:

【中文标题】启用 EF 代码首次迁移后 Azure 网站出现内部服务器错误【英文标题】:Internal server error on Azure web site after enabling EF code first migrations 【发布时间】:2013-10-21 03:09:08 【问题描述】:

我有一个非常简单的 MVC5 Web 应用程序(VS 2013 RC)部署到 Azure 网站。它一直有效,直到我在“发布 Web”对话框中检查了“执行代码优先迁移”。现在,当我访问该站点时,我遇到了内部服务器错误。如果我取消选中“发布 Web”对话框中的“执行代码优先迁移”复选框,则 Web 应用程序将按预期工作。在解决问题的过程中,我从本地计算机直接连接到 Azure 托管的数据库并运行 Enable-Migrations 和 Update-Database 命令,但我不确定是否有必要这样做。

您知道该复选框的用途以及应如何在 Azure 中启用自动代码优先迁移吗?

【问题讨论】:

【参考方案1】:

上周我启用了代码优先迁移并重新发布了一个在此之前一直在工作的网站时遇到了类似的问题。我观察到的似乎表明了这一点:

如果您已勾选此项,当您的网站最初开始运行时,它将运行代码优先迁移。由于我的新创建的表有一些“创建表”,因此它运行了该代码。不幸的是,我已经将 SQL Server 2012 的现有数据库发布到 Azure,并且该表中有数据。因此,代码首次迁移导致它删除该表并重新创建它。

我不能 100% 确定这是怎么回事,但我相信确实如此。主要是因为当我进入 SQL Server Management Studio 并在 Azure 上查看我的表的数据时,启动站点后它是空的。

为了确认,我重新发布了我的网站并确认数据库表中有数据。跑了这个网站,它就消失了。

所以不可避免地,我只是取消选中该框并重新发布我的网站和数据库。一旦我这样做了,数据就在那里,网站仍然有效。

【讨论】:

【参考方案2】:

我也遇到了同样的问题。原来是因为我通过 Nuget 将 Entity Framework 添加到类库中,但没有将其添加到 Web 项目中。这在本地有效,但在我发布到 Azure 时导致了您描述的症状。

【讨论】:

以上是关于启用 EF 代码首次迁移后 Azure 网站出现内部服务器错误的主要内容,如果未能解决你的问题,请参考以下文章

如何禁用代码首次迁移

在发布时应用 EF 迁移仅适用于某些 Web 项目

迁移到 .net core 3.1 后 EF OrderBy 出现问题

如何在 Azure 的 ConfigurationManager.ConnectionStrings 上使用 ConnectionStrings 创建 EF 迁移?

在 Azure Devops 中编写 EF6 迁移脚本

Linux迁移Azure后ssh不能访问