【发布时间】:2016-04-10 19:42:59
【问题描述】:
在 Microsoft Azure 上托管基于 Entity Framework 的网站后,我遇到了问题。如果在大约 30 分钟内没有对服务器进行任何调用,服务器将完全停止响应并为所有请求返回内部服务器错误 (500)。
当我在本地运行站点时,这不是问题(我可以让它运行几个小时而没有任何事情发生),当我回到它时它仍然可以工作。我设法通过运行一个每 15 分钟 ping 一次服务器的循环来解决这个问题,但这显然不是一个好的解决方案;所以我的问题是:我可以在哪里以及如何配置我的服务器的连接属性,以防止它在不使用时死机?
我对连接身份验证知之甚少,当我得到的唯一错误是内部服务器错误(它什么也没告诉我)时,我不知道如何解决这个问题。
这里是 Github 上的代码:https://github.com/synthc/UMD.git
【问题讨论】:
-
我没有遇到过这个问题,但这让我想知道工作线程是否在 30 分钟不活动后被回收。您是否长期保留数据库上下文?
-
好吧,我没有做任何事情来重新初始化我的数据库上下文,所以我会假设它永远不会被重新分配(这是一件坏事吗?)。
-
我最近没有使用 Azure 的经验,因此无法直接发表评论。在我的 MVC 应用程序中,数据库上下文在请求的整个生命周期内都存在。这让我可以做一些事情,比如恢复更改,而不必担心干扰其他请求。看看使用 Unity 检索 DBContext。它可以为您处理对象的生命周期。见stackoverflow.com/a/18264598/156755
-
写得更好,解释得体:stackoverflow.com/a/10588594/156755
-
在工作期间,你有多少流量。是否有任何其他代码块或系统在数据库上做任何工作。我们有类似的东西,直到我们注意到 EF 搞砸了统计数据。
标签: asp.net sql-server entity-framework azure