【问题标题】:Web application upgrade to 4.0 .Net Framework issueWeb 应用程序升级到 4.0 .Net Framework 问题
【发布时间】:2014-01-28 18:58:16
【问题描述】:

我们最近使用迁移向导将我们的一个 Web 应用程序从 2.0 .net Framework 升级到了 4.0 (VS 2010)。当单用户测试时,该应用程序在较低的环境中运行良好。但是在将其部署到生产环境后,当一些用户(大约 20 多个)访问该应用程序时,我们看到了大量错误,并显示以下错误消息:

超时。在获得一个之前的超时时间 来自池的连接。这可能是因为所有汇集的 连接正在使用中并且已达到最大池大小。 StackTrace=
在 System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection 拥有连接)在 System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection 外部连接,DbConnectionFactory 连接工厂)在 System.Data.SqlClient.SqlConnection.Open()

请注意,此应用程序大量使用类型化数据集,我已经在代码中搜索了任何显式打开的连接对象(不通过类型化数据集),但没有找到。

不清楚为什么在切换到 4.0 框架后会出错。我们回滚到 2.0 框架,事情平静下来,所有超时错误都消失了。

无法使用soapUILoadRunner 在较低的环境中重现它。

知道 4.0 与 2.0 内部有什么不同,还有关于如何调试/解决此问题的任何指示。

【问题讨论】:

  • 听起来您在请求生命周期内没有正确处理 SQL 连接。如果不仔细审核您的数据库层代码,就无法说出原因和位置。
  • 代码没有随着升级而改变。相同的代码适用于 2.0 框架。让我难过的是为什么它不适用于 4.0 框架。我相信,对于类型化的数据集,连接是在幕后建立的,应该在执行完命令后处理掉。
  • "连接是在幕后建立的" - 当然您可以这样做,但我建议您在任何应用程序的代码中显式控制连接大小或复杂性。这实际上与您的问题无关,尽管如果您这样做可能会更容易掌握正在发生的事情。

标签: asp.net strongly-typed-dataset connection-timeout


【解决方案1】:

为错误用户和工作用户的 SQL 连接添加协议分析器。看看连接的行为,这可能会告诉您幕后发生的事情以及可能在哪里查看您的代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多