是否可以在会话结束方法 asp.net 时释放与 SQL Server 的所有连接



当用户会话结束时 ASP.NET,是否有任何方法可以关闭/释放现有的SQL Server连接,因为我收到该错误 我还在我的应用程序中使用实体框架

超时已过期。在获取 从池连接。这可能是因为所有池化 连接正在使用中,已达到最大池大小。

首先,忘记会话。您的连接根本不应该绑定到会话 - 如果是,则存在问题。如果问题是您的 EF 上下文与会话相关联:那么再说一遍,我会说您做得非常错误。

(IMO) Web 应用中的连接有两个合理的范围:

  • 每个调用站点 - 即在需要时获取连接的位置(每个请求可能多次),并在退出相同方法之前立即处理它。这通常通过using块来实现。
  • 每个请求 - 您将请求保持打开状态并重复使用它,然后在每个请求结束时关闭/处置它。这可以使用全局上下文和结束请求事件来实现。

使用 Global.asax 中的Session_End

protected void Session_End(object sender, EventArgs e)
{
    // End connection
}
每次

需要在 SQL Server 中执行作业时,都应打开和关闭连接,而不是尝试将连接保留较长时间并在最后关闭它。

连接

池在现代数据库中非常有效,无需尝试将连接保持打开状态。在网站等情况下尤其如此,如果您保持连接打开时间过长,网站将无法很好地扩展。

这可能是因为 SQL 连接池已用尽(这与应用池不同)。可以通过连接字符串增加池大小来检查这一点:

Integrated Security=SSPI;Initial Catalog=northwind;Max Pool Size=100;

最新更新