我可以通过修改web.config
?
答案 0 :(得分:205)
是的,您可以将;Connection Timeout=30
附加到connection string并指定您想要的值。
Connection Timeout
属性中设置的超时值是以<秒> 表示的时间。如果未设置此属性,则连接的超时值为默认值(15秒)。
此外,将超时值设置为0
,您指定尝试连接等待无限时间。如文档中所述,这是您不应在连接字符串中设置的内容:
值为0表示没有限制,应在a中避免 ConnectionString因为尝试连接无限期等待。
答案 1 :(得分:31)
嗯...
正如Darin所说,您可以指定更高的连接超时值,但我怀疑这是真的问题。
当您获得连接超时时,通常会遇到以下问题之一:
网络配置 - Web服务器/ dev框与SQL Server之间的连接速度缓慢。增加超时可以纠正这个问题,但调查潜在问题是明智的。
连接字符串。我见过一些问题,不正确的用户名/密码会出于某种原因发出超时错误而不是真正的错误,表明“访问被拒绝”。这不应该发生,但这就是生活。
连接字符串2:如果您错误地或不完整地指定了服务器的名称(例如,mysqlserver
而不是mysqlserver.webdomain.com
),则会出现超时。您是否可以使用服务器名称从命令行完全按照连接字符串中的指定ping服务器?
连接字符串3:如果服务器名称在您的DNS(或主机文件)中,但指向不正确或无法访问的IP,您将获得超时而不是机器 - 未找到 - ish错误。
您正在调用的查询超时。它可能看起来与服务器的连接是问题,但是,根据应用程序的结构,您可能会在超时发生之前一直到执行查询的阶段。
连接泄漏。正在运行多少个进程?有多少开放连接?我不确定原始ADO.NET是否执行连接池,在必要时自动关闭连接ala Enterprise Library,或者所有配置。这可能是一个红鲱鱼。但是,在使用WCF和Web服务时,我遇到了未关闭连接导致超时和其他不可预测行为的问题。
要尝试的事情:
使用SQL Management Studio连接服务器时是否会出现超时?如果是这样,网络配置可能是问题。如果在与Management Studio连接时没有发现问题,则问题将出现在您的应用中,而不是服务器上。
运行SQL事件探查器,查看网络上实际发生的情况。您应该能够判断您是否真的在连接,或者查询是否是问题。
在Management Studio中运行查询,查看需要多长时间。
答案 2 :(得分:11)
如果您想动态更改它,我更喜欢使用 SqlConnectionStringBuilder 。
它允许您将ConnectionString(即字符串)转换为类Object,所有连接字符串属性都将成为其成员。
在这种情况下,真正的优势是你不必担心如果ConnectionTimeout字符串部分已经存在于连接字符串中?
同样,因为它创建了一个Object,它总是很好地在对象中赋值而不是操纵字符串。
以下是代码示例:
var sscsb = new SqlConnectionStringBuilder(_dbFactory.Database.ConnectionString);
sscsb.ConnectTimeout = 30;
var conn = new SqlConnection(sscsb.ConnectionString);