首页 > 解决方案 > IISExpress 对数据库连接的限制

问题描述

开发一个连接到 SQL Server 2012 并获取一些数据的简单 MVC5 应用程序。应用程序的主页上有一个 JavaScript

setInterval('myFunction()', 10000);

使用 AJAX 调用将我的模型与数据库中的最新更改重新绑定。当应用程序被部署到服务器时,它会按预期运行数天(日志中没有错误),但在开发过程中,当应用程序托管在 IISExpress 中时,我收到错误:

超时已过。在从池中获取连接之前超时时间已过。这可能是因为所有池连接都在使用中并且达到了最大池大小。

我在谷歌上搜索了几个小时的问题,所有点都指向泄漏的 SQL 连接或 DataReader 没有正确关闭,但是使用简单的选择语句我看到只有一个或两个连接同时打开(并且它们正在被及时释放)

DECLARE  @sp_who2 TABLE(SPID INT,Status VARCHAR(255),
  [Login]  VARCHAR(255),HostName  VARCHAR(255), 
  BlkBy  VARCHAR(255),DBName  VARCHAR(255), 
  Command VARCHAR(255),CPUTime INT, 
  DiskIO INT,LastBatch VARCHAR(255), 
  ProgramName VARCHAR(255),SPID2 INT, 
  REQUESTID INT) 
INSERT INTO @sp_who2 EXEC sp_who2
SELECT      * 
FROM       @sp_who2
WHERE       ProgramName = 'myProgram'
ORDER BY    DBName ASC

我多次验证了代码,发现连接和阅读器被关闭并正确处理。还有什么可能是错的?或者它只是 IIS Express 中的一些限制???

更新 我的连接字符串如下所示:

connectionString="Data Source=MyDBServer;Database=myDatabase;Trusted_Connection=Yes;Max Pool Size=100; Connection Timeout=30;Application Name=myApplication"

标签: c#asp.net-mvcado.netiis-express

解决方案


推荐阅读