c# - 将 Web 服务器升级到 .net Framework 4.6.1 时,与远程 SQL 服务器的连接中断

标签 c# asp.net .net sql-server

我们目前正在努力将我们的 asp.net 网络应用程序(托管在 IIS 7.5 上)从 .net 框架 v4.5 更新到 v4.6.1。在 SQL Server 与 IIS 在同一个机器上运行的小型低级环境/本地开发中,此更新工作正常并且不会破坏任何内容。然而,一旦我们在测试环境中更新我们的 Web 服务器,该测试环境从我们的 Web 服务器远程托管 SQL Server,我们的应用程序将无法再建立与数据库的连接。我们收到此错误:

Connection Timeout Expired. The timeout period elapsed while attempting to
consume the pre-login handshake acknowledgement. This could be because the
pre-login handshake failed or the server was unable to respond back in time.

SQL 服务器正在运行 CLR 版本 v4.0.30319。 我们使用 Entity Framework 版本 6.0.0.0 进行数据访问,连接字符串都使用集成安全性。我们还需要将托管 SQL Server 的盒子更新到 .net 4.6.1 吗?我不明白为什么我们的应用程序有必要建立与数据库的连接,但我一直无法在 MSDN 上找到与此相关的任何指导。

编辑:

这次崩溃后,我们将 Web 服务器降级回 .net v4.5,我们能够重新建立与 SQL Server 的连接。重新升级到 v4.6.1 再次导致损坏。因此,我们相对确定升级是问题所在,而不是应用程序代码和/或 IIS 设置的更改。

最佳答案

更新 - 看起来我们已经找到(至少是解决方案)问题。事实证明——如异常所示——通过增加连接字符串的连接超时属性(默认为 15 秒,我们将其设置为 60 秒),我们能够通过 Web 应用程序连接到数据库。然而,打开这个连接需要很长时间,所以我们开始寻找解决方案来让我们的连接打开得更快。我们发现我们在数据库服务器上启用了 TCP/IP 上的 Netbios,并且通过在我们的网络上打开 UDP 端口(137、138)以供 Netbios 访问,我们能够更快地打开与数据库的连接,计时在 <1 秒而不是 >15 秒。 我们仍然不确定为什么 .net 升级会暴露这个问题。通过使用 UDL 文件进行测试,我们能够确定与数据库的网络连接在 .net 4.5 上的 Web 服务器上的性能与在 .net 4.6.1 上的 Web 服务器上的性能大致相同。因此,似乎我们的连接打开速度如此之慢,以至于我们已经非常接近超时,而 4.6.1 中的某种额外逻辑/错误使我们处于边缘。如果我们对此有更清楚的了解,我会更新。

关于c# - 将 Web 服务器升级到 .net Framework 4.6.1 时,与远程 SQL 服务器的连接中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34617286/

相关文章:

C# 互操作字、剪切和粘贴适用于 Office 2016,但不适用于 Office 2019

c# - 在带预览的纸质表格上打印

asp.net - Elmah nuget 包不更新 web.config

c# - ASP :Button click event inside update panel not firing

c# - 尝试将 xml 文件转换为对象

c# - 将对象数组添加到扩展对象列表的最佳方法

c# - 简单的 Sitecore ASP 转发器 - 访问字段

c# - 如何更新动态生成的 asp :image in an UpdatePanel without flickering?

.net - IEnumerable <T>与IReadOnlyList <T>

c# - 匿名方法 (lambda) 中捕获的外部变量