我创建了一个监听端口的Windows服务(使用HttpListner)并接受XML Repuest,一旦请求有效,它就连接到数据库(通常在同一台PC上)并构造xml响应并将其发回。 / p>
到目前为止,一切都很棒,除非服务接受两个或多个需要检索100多条记录的请求,否则它会崩溃。首先,我只使用一个与数据库的共享连接,它确实崩溃了,然后我改为多个连接,即当你需要来自数据库的东西时创建你的连接。
我使用eventlog进行了一些故障排除以获取异常,这是我在崩溃之前遇到的一些例外:
从服务器接收结果时发生传输级错误。 (提供者:会话提供者,错误:19 - 物理连接不可用)
ConnectionString属性尚未初始化。
ExecuteReader需要一个开放且可用的连接。连接的当前状态是连接。
ExecuteReader需要一个开放且可用的连接。连接的当前状态是打开的。
读取器关闭时无效尝试调用Read。
以下是我正在使用的代码示例:
Private Sub StartLisitng()
MyListener.Start()
Dim result As IAsyncResult
result = MyListener.BeginGetContext(New AsyncCallback(AddressOf ListnerCallback), MyListener)
End Sub
Private Sub ListnerCallback(ByVal result As IAsyncResult)
StartLisitng()
If result.IsCompleted Then
ctx = MyListener.EndGetContext(result)
Dim HandleRequestThread As New Thread(AddressOf New HandleRequest(ctx).RequestProcess)
HandleRequestThread.Start()
End If
End Sub
Public Function RemoteConnect(ByVal DNSBranch As String) As Boolean
Dim IsRemoteConnected As Boolean = False
RemoteConnString = "Data Source = " & DNSBranch & ";Initial Catalog=xxxxx;User ID=xxxxx;Password=xxxxx;Connect Timeout=5;MultipleActiveResultSets=True;"
RemoteConn = New SqlConnection(RemoteConnString)
Try
RemoteConn.Open()
Catch ex As Exception
IsRemoteConnected = False
End Try
If RemoteConn.State = 1 Then
IsRemoteConnected = True
Else
IsRemoteConnected = False
End If
Return IsRemoteConnected
End Function
Public Function RemoteExeComd(ByVal DNSBranch As String, ByVal query As String) As DataSet
Dim MyDataSet As New DataSet
RemoteConnect(DNSBranch)
Comd = New SqlCommand(query, RemoteConn)
Adapter = New SqlDataAdapter(Comd)
If query.StartsWith("Se") Or query.StartsWith("se") Or query.StartsWith("SE") Then
If RemoteConn.State = ConnectionState.Open Then
Try
Adapter.Fill(MyDataSet)
Catch ex As Exception
EventLog.WriteEntry("My Service", "Exception: " & ex.Message.ToString)
End Try
End If
Else
Try
Comd.ExecuteNonQuery()
Catch ex As Exception
EventLog.WriteEntry("My Service", "Exception: " & ex.Message.ToString)
End Try
End If
Comd.Dispose()
Adapter.Dispose()
Return MyDataSet
End Function
我对列表器或解析请求没有任何问题,我知道我对数据库的交互方式存在问题。
任何建议,谢谢你的时间。