【问题标题】:Vb.Net Detect if application server is downVb.Net 检测应用程序服务器是否关闭
【发布时间】:2014-06-24 15:45:56
【问题描述】:

我开发了一个 .Net 应用程序,我想通过 LAN 中的共享文件与用户共享该文件,该文件由域服务器管理。当服务器启动并运行良好但服务器关闭时出现错误。我可以访问该服务器中的 sql server 数据库。当服务器关闭时,它会给出一个致命错误并且应用程序停止。如何检测服务器宕机的错误? 我通过以下代码连接到服务器:

Dim sql As String
Dim daCourseMaster As SqlDataAdapter

        Try
            sqlConn = New SqlConnection(connString)
            sqlConn.Open()

            sql = " ... "

            daCourseMaster = New SqlDataAdapter(sql, sqlConn)
            daCourseMaster.Fill(dsDataset, "table")
            dvRegister = New DataView
            dvRegister = dsDataset.Tables("courseRegisters").DefaultView
            dgvCourseRegister.DataSource = dvRegister


        Catch ex As Exception
            MsgBox(Err.Description)
        End Try

现在用户无法登录服务器可能有不同的原因:服务器名称错误或用户名或密码错误或bserver可能被关闭!如何区分这些原因,让用户知道可能是什么原因导致登录失败?

【问题讨论】:

  • 你可以先 ping 它 - My.Computer.Network.Ping(ServerName)
  • 连接失败时处理异常。
  • 请提供您对“服务器已关闭”的定义。通常是某个特定的服务出现故障,甚至可能只是因为客户端请求过多而导致超时。
  • 我的意思是服务器关闭

标签: vb.net login detect application-server


【解决方案1】:

在进行共享的代码之前使用此代码(如果代码在 Sub 中):

 If Not My.Computer.Network.Ping(" You Server Name or Server IP") Then Exit Sub

或者(如果是函数中的代码):

 If Not My.Computer.Network.Ping(" You Server Name or Server IP") Then Exit Function

【讨论】:

    【解决方案2】:

    比方说,您需要查询您的数据库。当您打开连接然后执行查询时,使用 Try-Catch 块并拦截 SqlException。它有不同的代码,因此您可以测试它的连接相关代码

    Try
    
        Using conn as new SqlConnection(...)
            conn.Open()
            ....
        End Using
    Catch (connEx as SqlException)
       ' sql - related error handling
    Catch (ex as Exception)
       ' here handle all other exception
    End Try
    

    这样,您可以让用户知道连接已丢失并“稍后重试”或类似的东西

    【讨论】:

      猜你喜欢
      • 2013-05-03
      • 1970-01-01
      • 1970-01-01
      • 2016-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多