gpt4 book ai didi

asp.net - Entity Framework 服务器超时

转载 作者:行者123 更新时间:2023-12-03 03:11:49 26 4
gpt4 key购买 nike

在 Microsoft Azure 上托管基于 Entity Framework 的网站后,我一直遇到问题。如果大约 30 分钟内没有对服务器进行任何调用,服务器将完全停止响应,并对所有请求返回内部服务器错误 (500)。

当我在本地运行该网站时,这不是问题(我可以让它运行几个小时而没有任何反应),并且当我返回时它仍然可以工作。我设法通过运行一个每 15 分钟 ping 一次服务器的循环来解决这个问题,但这显然不是一个好的解决方案;所以我的问题是:在哪里以及如何配置我的服务器的连接属性以防止其在不使用时死亡?

我对连接身份验证知之甚少,并且当我收到的唯一错误是内部服务器错误(它告诉我任何信息)时,我不知道如何解决此问题。

这是 Github 上的代码:https://github.com/synthc/UMD.git

最佳答案

我想到了很多事情想与您分享 - Basic 已经指出了其中之一。

始终在线

首先 - 您的 Web 应用程序看起来“进入休眠状态”的原因是 Azure Web 应用程序中的一项功能可以关闭:

Always On description

您可以阅读有关此功能 here 的更多信息。

我怀疑在尝试恢复 Web 应用程序时出现问题,即数据库连接出现问题 - 这会导致 500 秒。

数据上下文生命周期管理

因此,确实,正如 Basic 指出的那样 - 我建议将 Entity Framework ( EF ) 上下文的依赖注入(inject) ( DI ) 使用到 Controller 中。这将为 EF 数据上下文提供单个请求的生命周期,从而大大减少上下文进入错误状态的情况。

Ninject 是我最常使用的 DI 容器,这里有一篇关于如何让它与 ASP.NET MVC 一起工作的文章:http://www.davepaquette.com/archive/2013/03/27/managing-entity-framework-dbcontext-lifetime-in-asp-net-mvc.aspx

Entity Framework 执行策略

最后 - EF 为数据库提供了不同的执行策略。它还为 Azure 上的连接提供了一种特殊的连接。您想要考虑启用 SqlAzureExecutionStrategy,如下所述: https://msdn.microsoft.com/en-us/data/dn456835.aspx 。这将更好地处理云中可能发生的 transient 故障。

我很确定,如果你使用了所有这些 - 你应该没问题,你的 500 秒应该消失了。

关于asp.net - Entity Framework 服务器超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36534681/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com