gpt4 book ai didi

c# - Connection.open 无限期挂起,不抛出异常

转载 作者:可可西里 更新时间:2023-11-01 08:11:30 24 4
gpt4 key购买 nike

当我尝试执行以下代码时,程序无限期挂起。我不知道为什么,似乎还有其他 Unresolved 话题。不过,如果无法访问 IP\网站,则它会按预期工作。

    private void DoStuff()
{
string connectionString = "Data Source=www.google.com;Connection Timeout=5";
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open(); //Hangs here indefinitely
Console.WriteLine("Test");
}
}

例如,如果我将连接字符串设置为

connectionString = "Data Source=www.nonexistentsite.com;Connection Timeout=5";

然后它会抛出一个异常。我如何让它为事件站点抛出异常? ...此外,google 显然只是用于测试目的。

编辑:

如果我尝试连接到一个无法访问的服务器名称或 IP 地址,我得到这个异常...

建立与 SQL Server 的连接时出现与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供程序:命名管道提供程序,错误:40 - 无法打开与 SQL Server 的连接)

更新:

让程序运行一段时间后,它通常会在 3-5 分钟后超时,并给出我在上面发布的错误。我怎样才能让它更快地超时?

最佳答案

如果您为您的数据源设置了一个 FQDN(完全限定域名),例如 example.com,并且 DNS 服务器无法解析此 FQDN很长一段时间很明显你的请求会挂起。确保运行应用程序的计算机可以访问 SQL 服务器并毫无问题地解决它。此外,您可能还想确保没有防火墙可能会阻止请求。

出现这些症状的另一个可能原因是您已经耗尽了 ADO.NET 的连接池。如果您有许多并行运行的慢速 SQL 查询,则可能会发生这种情况,每个查询都与数据库建立物理连接。此池中的可用连接数有限制,当达到此限制时,对 connection.Open() 的下一次调用可能会等待可用连接返回到池中。

备注:您可能还需要在连接字符串中指定您希望如何针对 SQL 服务器进行身份验证。结帐connectionstrings.com更多示例。

这就是说您在问题中发布的 C# 代码绝对没有错。它看起来更像是一个与网络相关的问题,您可以提请网络管理员注意。

关于c# - Connection.open 无限期挂起,不抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16448857/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com