保持azure asp.net core webapi only应用程序处于打开状态

保持azure asp.net core webapi only应用程序处于打开状态,azure,asp.net-core,.net-core,azure-sql-database,Azure,Asp.net Core,.net Core,Azure Sql Database,我在azure上部署了一个.NET核心应用程序,它完全由访问azure sql db的RESTful服务组成——没有前端。IIRC,对于部署在azure上且在一定时间内处于非活动状态的任何应用程序,azure将“关闭”该应用程序和/或db。一旦“关闭”,应用程序/db在调用RESTful服务时需要一段时间才能“唤醒” 有没有办法防止这种情况在azure上发生?我试着打开“始终打开”,但我认为这只是敲打根,对我来说没有任何作用。我的问题是,有时RESTful服务会超时,因为azure需要一些时间来

我在azure上部署了一个.NET核心应用程序,它完全由访问azure sql db的RESTful服务组成——没有前端。IIRC,对于部署在azure上且在一定时间内处于非活动状态的任何应用程序,azure将“关闭”该应用程序和/或db。一旦“关闭”,应用程序/db在调用RESTful服务时需要一段时间才能“唤醒”


有没有办法防止这种情况在azure上发生?我试着打开“始终打开”,但我认为这只是敲打根,对我来说没有任何作用。我的问题是,有时RESTful服务会超时,因为azure需要一些时间来“唤醒”应用程序/db。

这可能是由azure SQL db造成的。如果您使用的是基本层级别的数据库,则可能会出现问题。这一层使用可预测的每小时交易率。标准配置确实具有可预测的每分钟TR和高级可预测的每秒TR。这可以为每层自动DTU扩展划分优先级

如果在一段时间后执行单个请求,则预测不会受到很大影响。您将需要执行一系列数据库事务,以便为您的数据库分配DTU

所以,在您的情况下,在开始使用数据库之前,最好在合理的时间间隔内访问数据库


您可以通过创建webjob来实现这一点,该webjob将命中一些应用程序端点,这些端点将对db进行查询。

是的,总是在ping页面时请求保持其活动状态。但你不能阻止回收,它总是在某些时候发生(内存压力、配置更改等)。这就是IIS的工作原理works@Tseng知道我没有要ping的页面,有没有办法让它在回收后自动恢复?不知道,在IIS中,您可以设置特定应用程序池的空闲时间,但不确定应用程序服务是否可用。当然,您可以为页面的根目录设置一个静态文件中间件,以便在请求时提供一个空的html文件。或者尝试docker服务,Kestrel作为自己的进程使用nginx运行,除非容器崩溃,否则不会重新启动