我几乎刚刚将我的 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/