开发一个连接到SQL Server 2012并获取一些数据的简单MVC5应用程序。该应用程序的主页上有一个JavaScript
setInterval('myFunction()', 10000);
使用AJAX调用使用数据库中的最新更改重新绑定我的模型。当应用程序部署到服务器时,它按预期运行数天(日志中没有错误),但在开发期间,当IISExpress中托管的应用程序出现错误时:
超时已过期。从池中获取连接之前经过的超时时间。这可能是因为所有池连接都在使用中并且达到了最大池大小。
我正在谷歌搜索问题几个小时,所有都指向泄漏的SQL连接或DataReader没有正确关闭,但使用简单的select语句我看到只有一个或两个连接同时打开(并且它们正在及时发布)< / p>
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"