多个 Ajax 请求共享一个数据库连接 (C#)
Multiple Ajax requests sharing a database connection (C#)
我有一个页面在启动时发出两个 Ajax 请求(我知道它们应该合并,但我感兴趣的是除此之外还有什么正确的解决方案)- 它们各自发出请求 WebAPI 控制器获取通过 JSON.
返回的数据
它们单独运行时效果很好,但同时触发两个 Ajax 请求会导致著名的 "there is already an open datareader associated with this command" 错误。
这似乎是因为我在 Application_Start
中设置了一个数据库连接并将该连接用于所有控制器。如果我在每个控制器中创建一个新连接,它就可以正常工作。
所以我的问题是,在每个控制器中创建一个新的数据库连接是否正确,或者是否有一些选项可以锁定/共享单个连接?
不要跨应用程序使用单一连接。
尽可能晚地创建和打开数据库连接,并尽可能早地关闭。这应该是规则。
对于WebAPI,您应该在每次请求时打开连接、获取数据、关闭连接和return数据到客户端。让 ADO.Net 连接池处理您的连接。
我有一个页面在启动时发出两个 Ajax 请求(我知道它们应该合并,但我感兴趣的是除此之外还有什么正确的解决方案)- 它们各自发出请求 WebAPI 控制器获取通过 JSON.
返回的数据它们单独运行时效果很好,但同时触发两个 Ajax 请求会导致著名的 "there is already an open datareader associated with this command" 错误。
这似乎是因为我在 Application_Start
中设置了一个数据库连接并将该连接用于所有控制器。如果我在每个控制器中创建一个新连接,它就可以正常工作。
所以我的问题是,在每个控制器中创建一个新的数据库连接是否正确,或者是否有一些选项可以锁定/共享单个连接?
不要跨应用程序使用单一连接。
尽可能晚地创建和打开数据库连接,并尽可能早地关闭。这应该是规则。
对于WebAPI,您应该在每次请求时打开连接、获取数据、关闭连接和return数据到客户端。让 ADO.Net 连接池处理您的连接。