我在Windows服务中使用webmatrix的Database类。 (并在winform中调试会导致同样的错误)
我收到的错误(运行一段时间后)是:
超时已过期。在获得a之前经过了超时时间 从游泳池连接。这可能已经发生,因为所有汇集 正在使用连接并达到最大池大小。
这应该通过使用using语句来确保所有连接都被关闭来解决。 (as described in this good answer)但我最近开始使用WebMatrix数据库类,它似乎没有关闭我用它打开的连接。
问题是:如何关闭使用WebMatrix中的Database类创建的连接?
使用此代码:
Public Shared Function GetProperty(pid As Integer, propertyName As String) As String
Dim db = Database.Open("SSEConnectionString")
Dim item = db.QuerySingle("select PropertyValue from eConfiguration where PID=@0 and PropertyName=@1", pid, propertyName)
Dim retVal = item.PropertyValue
db.Connection.Close()
db.Close()
Return retVal
End Function
每次运行此代码时,我都会在 sys.sysprocesses 表中获得一个新条目(根据我的想法,这表明创建并维护了一个新连接)
我的connectionstring看起来像这样:
<add name="SSEConnectionString" connectionString="Data
来源= 123.45.67.890;初始目录= SSE;用户 ID = +++;密码= +++;连接超时= 5;应用程序名称= SSE_Service“ providerName =“System.Data.SqlClient”/&gt;
知道我做错了吗?
修改:Asked a second question regarding the sysprocesses table - unsure if it helps in debugging
感谢您的帮助
Edit2:Arghhhhh ....我刚刚发现导致错误的原因 - 而且它只与我自己有关。我忘了关闭连接。 : - (
Larsi
答案 0 :(得分:0)
使用:
db.Connection.Close()
db.Close()