2010-09-22 64 views
1

我有一个使用LinqToSql的Winform应用程序,因为它是DAL。有一个中央SQL数据库,每台笔记本电脑都有一个本地SQLExpress数据库。使用合并复制的单独模块使两者保持同步。当连接失去中央数据库时,它会'故障'到本地。这很好。立即重新连接的SQL异常

然而,当我恢复连接如到中央数据库中,如果时间还没有真正的长,我得到下面的异常 - >

A transport-level error has occurred when sending the request to the server. (provider: TCP Provider, error: 0 - An existing connection was forcibly closed by the remote host.)

我已经通过无数的帖子在这里读SO与此有关,甚至是这个msdn article,详细地概述和解释了什么是错误的,通过所有这些,我还没有找到或阅读解决方案。

我想知道别人怎么处理这个。我很难相信我在这里踏上了新的一步。有没有办法在重新连接时删除我的旧连接?

我在这失去了头发,所以任何洞察力赞赏。

编辑

另外值得注意的是,我很积极的,我所有的Data Contexts被包裹在一个using和我没有任何“长期”上下文。

+0

只是一个建议:尝试禁用连接池。当你“关闭”一个ado.net连接时,它不会实际关闭,它会返回到连接池,以便稍后重用它。 – CodingGorilla 2010-09-22 19:13:58

+0

当然,是每个连接的东西或服务器的东西?我相信我会找到它。 – 2010-09-22 19:23:33

+1

这是一个可以添加到连接字符串本身的设置,只需添加:Pooling = false。 – CodingGorilla 2010-09-22 21:09:35

回答

1

使用“Pooling = false”连接字符串属性关闭连接池似乎解决了问题。