不断检查与Web服务的连接

时间:2016-08-30 09:14:06

标签: vb.net web-services

我有一个在vb.net上写的Windows服务,每隔几秒10秒或更长时间它将检查我是否有连接到webservice链接,如果我这样做,那么生病了一些数据到该web服务。我不会总是有数据要发送,但无论我想在我尝试发送任何东西之前检查我是否有连接,并且在这种情况下生病了解服务是否已启动。 我的问题是,经过2-3次尝试,连接检查会让我“连接超时”#。

以下是我使用的代码:

Public Function HaveInternetConnection() As Boolean
        HaveInternetConnection = False
        Try
            Dim request As HttpWebRequest = HttpWebRequest.Create(My.Settings.WebServiceLink)
            request.Timeout = 15000

            Dim response As HttpWebResponse = request.GetResponse

            If response.StatusCode = HttpStatusCode.OK Then
                HaveInternetConnection = True
            End If
        Catch ex As Exception
            Return False
        End Try

我尝试更改超时时间但没有运气。 我还尝试创建一个新的' Private ws As New webservice'在每个时间间隔,并且在服务启动时不创建1个新的Web服务但又没有运气。

如果我连接到网络服务,是否有更简单的方法每隔几秒检查一次?

提前谢谢

1 个答案:

答案 0 :(得分:0)

您的代码看起来没问题,因此如果您收到超时错误,可能是出于其他原因。

要检查与主机的连接,您可以ping它,从而节省CPU时间来创建HTTPWebRequest

示例:

If My.Computer.Network.IsAvailable Then
    'this only tells that the PC is connected to a network
    'doesn't really mean that there is internet access!
    Try
        My.Computer.Network.Ping("yourhost")
        'here the host has answered the ping request
      Catch ex As System.Net.NetworkInformation.PingException
        'the ping has failed. your host is unreachable
      End Try
End If

测试是否有可用的网络可以防止CPU在PC离线时产生异常(繁重的操作)