c# - 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"
解决方案
推荐阅读
- html - 以最易于访问的方式显示统计信息的正确 HTML 是什么?
- c - C 编程错误:“结构”之前的预期表达式
- linux - 如何修复 Nessus 扫描报告“缺少功能级别访问控制”?
- python - 在 pycharm 上激活现有的 venv
- excel - 按名称查找列标题,然后从多个工作簿中选择标题下方的所有数据,然后将数据粘贴到 Excel VBA 的主文件中的另一个下方
- javascript - 基本相同的代码,但一个导致无限循环的使用效果
- php - Laravel 8 UniSharp File Manager 3 将基本目录从 app/storage 更改为 app/public
- string - Android:使用字符串 ID 调用字符串资源
- firebase - 在我停止并以调试模式重新运行应用程序后,Flutter 会清除移动应用程序目录(不是临时目录)
- css - 如何垂直对齐较小的材质浮动按钮?