多个Ajax请求共享数据库连接(C#)

时间:2015-03-10 17:30:20

标签: c# ajax database datareader

我有一个页面在启动时发出两个Ajax请求(它们应该合并,我知道,但我对正确的解决方案除此之外感兴趣) - 它们每个都向WebAPI控制器发出请求获取通过JSON返回的数据。

单独地,它们工作得很好,但是同时触发两个Ajax请求会导致着名的“已经存在与此命令关联的打开的数据加载器”错误。

这似乎是因为我在Application_Start中设置了一个数据库连接,并将该连接用于所有控制器。如果我在每个控制器中创建一个新连接,它就可以正常工作。

所以我的问题是,在每个控制器中创建一个新的数据库连接是正确的,还是有一些锁定/共享单个连接的选项?

1 个答案:

答案 0 :(得分:2)

不要跨应用程序使用单个连接。


尽可能晚地创建并打开数据库连接,并尽早关闭。这应该是规则。

对于WebAPI,您应该在每个请求上打开连接,获取数据,关闭连接并将数据返回给客户端。让ADO.Net连接池来处理您的连接。

请参阅:SQL Server Connection Pooling (ADO.NET)