多个 Ajax 请求共享一个数据库连接 (C#)
Posted
技术标签:
【中文标题】多个 Ajax 请求共享一个数据库连接 (C#)【英文标题】:Multiple Ajax requests sharing a database connection (C#) 【发布时间】:2015-03-10 17:30:19 【问题描述】:我有一个页面在启动时发出两个 Ajax 请求(我知道它们应该合并,但我对除此之外的正确解决方案感兴趣)——它们每个都向 WebAPI 控制器发出请求获取通过 JSON 返回的数据。
单独它们工作得很好,但是同时触发两个 Ajax 请求会导致著名的“已经有一个打开的数据读取器与此命令相关联”错误。
这似乎是因为我在Application_Start
中设置了一个数据库连接并将该连接用于所有控制器。如果我在每个控制器中创建一个新连接,它就可以正常工作。
所以我的问题是,在每个控制器中创建一个新的数据库连接是否正确,或者是否有一些选项可以锁定/共享单个连接?
【问题讨论】:
【参考方案1】:不要跨应用程序使用单个连接。
尽可能晚地创建和打开数据库连接,并尽可能早地关闭。这应该是规则。
对于 WebAPI,您应该在每个请求上打开连接,获取数据,关闭连接并将数据返回给客户端。让 ADO.Net 连接池处理您的连接。
见:SQL Server Connection Pooling (ADO.NET)
【讨论】:
以上是关于多个 Ajax 请求共享一个数据库连接 (C#)的主要内容,如果未能解决你的问题,请参考以下文章