在IIS下运行时,"基础提供程序在Open上失败"

mra*_*hal 7 sql-server iis asp.net-core

我们有一个在服务器上运行的网站.我们有一个"生产"实例和一个"临时"实例,每个实例都有自己的数据库.MSSQL Server在同一服务器上本地运行.

今天,突然"生产"网站倒闭了.查看日志,出现以下异常:

System.Data.Entity.Core.EntityException: The underlying provider failed on Open. ---> System.InvalidOperationException: Timeout expired.  The timeout period elapsed prior to obtaining a connection from the pool.  This may have occurred because all pooled connections were in use and max pool size was reached.
Run Code Online (Sandbox Code Playgroud)

与此同时,"升级"网站正常运作.

在尝试弄清楚发生了什么的同时,我尝试了各种各样的事情,比如重新创建应用程序池和IIS应用程序.我还将"生产"IIS应用程序连接到"临时"应用程序的同一个应用程序池,仍然是同样的问题.当然也重启了服务器.

此外,我直接运行"生产"网站的可执行文件(作为控制台应用程序),它正常工作.所以这只是在IIS下运行时才会出现的问题.

我尝试的最后一件事是,我重新配置了"登台"网站以使用"生产"数据库,并且我完全震惊它正常工作.因为我认为问题是"生产"数据库本身.

我根本不知道这里发生了什么.很感谢任何形式的帮助.

Joe*_*Joe 1

如果连接池中的所有连接都被使用,则几乎可以肯定是因为您的应用程序正在打开数据库连接并且无法关闭它们。

由于您使用的是实体框架,这可能是因为您的应用程序无法处理DbContext 对象

这与生产数据库本身无关;与临时站点相比,生产站点上的活动增加可能会使应用程序错误更快地显现出来。