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



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

单独而言,它们工作得很好,但是同时触发两个Ajax请求会导致著名的"已经有一个与此命令关联的打开数据读取器"错误。

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

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

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


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

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

请参见: SQL Server 连接池 (ADO.NET)

最新更新