Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 服务器在使用企业库和Unity时不放弃连接?_.net_Sql Server_Asp.net Web Api_Unity Container_Enterprise Library 6 - Fatal编程技术网

.net 服务器在使用企业库和Unity时不放弃连接?

.net 服务器在使用企业库和Unity时不放弃连接?,.net,sql-server,asp.net-web-api,unity-container,enterprise-library-6,.net,Sql Server,Asp.net Web Api,Unity Container,Enterprise Library 6,我遇到了一个非常奇怪的问题。我们通过Unity将WebAPI2.1与Enterprise Library 6数据块和依赖项注入一起使用。我开始注意到,如果我经常刷新其中一个页面,最终会出现可怕的“超时过期。从池中获取连接之前超时时间已过”错误。页面上只有大约6个web api调用 大概企业库应该为我处理我的连接,所以我想知道这是否与我们使用DI和终身管理器有关?我们已经检查了我们的代码,我们在任何地方都有“使用”块 不管怎么说,我环顾四周看到: 检查Sql Server系统进程显示,我们站点的连

我遇到了一个非常奇怪的问题。我们通过Unity将WebAPI2.1与Enterprise Library 6数据块和依赖项注入一起使用。我开始注意到,如果我经常刷新其中一个页面,最终会出现可怕的“超时过期。从池中获取连接之前超时时间已过”错误。页面上只有大约6个web api调用

大概企业库应该为我处理我的连接,所以我想知道这是否与我们使用DI和终身管理器有关?我们已经检查了我们的代码,我们在任何地方都有“使用”块

不管怎么说,我环顾四周看到:

检查Sql Server系统进程显示,我们站点的连接数相当低(最大值约为8)。我偶尔会看到我们的程序名与空loginame和nt_username字段的连接。我不知道那是怎么回事。这些连接最多可以增加20个,但也会很快(几秒钟内)消失

但是,在我们的web api站点的PerfMon中检查SqlServer的.NET数据提供程序的计数器时,池连接数会快速上升。在几次刷新后,上面提到的页面将很快达到120个连接。回收的连接数在相当长的一段时间内保持在0。最终,在长时间的不活动之后,它会急剧上升。我读过这篇文章,这表明连接未正确关闭


一旦达到120个池连接,api站点将永久性地返回500个带有连接池错误的错误,即使Sql Server上的连接被放弃,这种情况在IIS显示任何回收的连接之前就发生了。Sql Server可能在5分钟不活动后放弃,而IIS将在30~后放弃

嗯,这将是令人失望的。它最终在我们的一个图书馆被不当处理


我已经检查了我正在使用的所有存储库类,但是我没有检查我们的数据框架,它有一个IResultSetMapper的实现,没有关闭数据读取器

显示您的代码。如何注入,以及如何打开连接。Unity是否应该为您关闭连接?是,也不是,这取决于您如何使用它。听起来组件的使用寿命/使用方式可能不正确,或者容器没有适当地释放它们。