azure - 使用 Entity Framework 将 Web api 部署到 Azure,工作了 1 小时,现在出现错误 500

标签 azure entity-framework-6 asp.net-web-api2

我几乎刚刚将我的 Web Api 项目部署到一个免费的 Azure 服务器上,上面有一个基本的数据库。我将其发布到网站后,效果非常好。我可以从我的 Angular 2 应用程序调用它并从数据库接收数据。

2 小时后,当我再次尝试使用它时,我在调用有效的 REST 方法时收到错误 500。

当我调试 Angular 2 应用程序时,我可以在 Chrome 的“网络”选项卡中看到以下内容。

xhr_backend.ts:82 GET http://sitename.azurewebsites.net/api/getbookings 500 (Internal Server Error) 

也尝试过 postman ,它也得到了这个错误,我得到的以下信息是:

{
  "Message": "An error has occurred."
}

也尝试过停止该网站并重新启动它,但没有帮助。

它必须是 Entity Framework 的东西,因为该网站正在运行。

我正在使用迁移,并在配置文件中设置了一些测试数据,如下所示:

var pet = new List<Pet>
        {
            new Pet {BookingId = 1, PetType = PetType.Dog},
            new Pet {BookingId = 2, PetType = PetType.Dog},
            new Pet {BookingId = 2, PetType = PetType.Cat},
            new Pet {BookingId = 3, PetType = PetType.Dog},
            new Pet {BookingId = 4, PetType = PetType.Dog},
            new Pet {BookingId = 4, PetType = PetType.Cat},
            new Pet {BookingId = 5, PetType = PetType.None},
            new Pet {BookingId = 6, PetType = PetType.Cat},
            new Pet {BookingId = 6, PetType = PetType.Dog},
            new Pet {BookingId = 7, PetType = PetType.None},
            new Pet {BookingId = 8, PetType = PetType.None},
        };

        pet.ForEach(p => context.Pets.AddOrUpdate(s => s.Id, p));
        context.SaveChanges();

我不知道如何找出这里可能出现的问题。我第一次将应用程序部署到 Azure :D

有人知道 Azure 是否多次调用更新数据库吗? (当您部署应用程序时)

当我尝试在本地数据库上输入 update-database 时,出现错误:

Sequence contains more than one element

也许与此有关?希望有人有一些我可以尝试的技巧。

更新:

经过一番调查,我打开了 api 的错误。我现在收到以下错误:

<ExceptionMessage>Sequence contains more than one element</ExceptionMessage>
<ExceptionType>System.InvalidOperationException</ExceptionType>

最佳答案

此异常是在尝试使用 AddOrUpdate 指定标识符表达式时引起的,其中该表达式可能有多个匹配项。

该函数内部将使用SingleOrDefault,如果找到多个匹配元素,则会抛出异常。

关于azure - 使用 Entity Framework 将 Web api 部署到 Azure,工作了 1 小时,现在出现错误 500,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36810743/

相关文章:

Azure Web 服务选项为 "Legacy"

c# - 无法运行在运行时设置 DbContext 连接字符串并将项目与应用程序分开的 EF 迁移

c# - EF6 POCO 无法在 1..* 关系中转换 HashSet 类型的对象

c# - Web Api 返回扩展键值对象而不是原始 JSON 对象

azure - Azure Synapse 中 Delta Lake 和 Lake 数据库之间的区别

azure - 编写 Azure 表存储 - 本地和云的不同行为

C# Entity Framework 批量更新

c# - IIS 日志中的 WebAPI 路由

c# - 从 Web API Controller 重定向 POST 请求时处理 100-continue

azure - 尽管具有全局管理员角色,但无法删除租户的广泛 azure 策略