我们正在将所有站点从MS Server 2008迁移到Server 2012R2。问题出在特定网站上。某些页面使用连接字符串连接到客户端的azure数据库以访问其数据。几个星期前我们迁移了这个网站,没有任何问题。现在这些页面上出现了错误。错误是:
A connection was successfully established with the server, but then an error occurred during the login process. (provider: SSL Provider, error: 0 - An existing connection was forcibly closed by the remote host.)
我们的托管服务提供商做了更新,并推测是这种情况。但是,当回滚更新时,问题仍然存在。我在旧服务器上添加了一个临时站点,具有完全相同的代码,并且没有连接到azure db的问题。或者,新服务器上有一些变化,或者客户端有一些变化。这是我使用的代码:
Dim sAzureDB As String = "Server=tcp:<address>.database.windows.net,1433;Database=<DBNAME>;User ID=<USERNAME>;Password=<PASSWORD>;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;"
Public Function GetDistinctDivisionGroup(Optional ByVal OGroupID As Integer = -1) As DataSet
OpenConn("<Stored Procedure>", CommandType.StoredProcedure, sAzureDB)
Dim oAdapter As New SqlDataAdapter
Dim oData As New DataSet
oAdapter.SelectCommand = oCmd
oCmd.Parameters.Clear()
If OGroupID > -1 Then
oCmd.Parameters.Add("@OGroupID", SqlDbType.Int, 4).Value = OGroupID
End If
Try
oAdapter.Fill(oData, "DistinctDivision")
Catch ex As Exception
Throw
Finally
KillConn()
End Try
Return oData
End Function
Private oConn As SqlConnection
Private oCmd As SqlCommand
Private Sub OpenConn(ByVal ThisCommandText As String, ByVal ThisCommandType As CommandType, Optional ByVal AlternateConnection As String = "", Optional ByVal UseRDB As Boolean = False)
If UseRDB Then
oConn = New SqlConnection(HttpContext.Current.Application("conString"))
Else
If AlternateConnection <> "" Then
oConn = New SqlConnection(AlternateConnection)
Else
oConn = New SqlConnection(HttpContext.Current.Application("conRString"))
End If
End If
oCmd = New SqlCommand()
' wait 60 seconds before timing out
oCmd.CommandTimeout = 60
oCmd.Connection = oConn
' the content is being edited
oCmd.CommandText = ThisCommandText
oCmd.CommandType = ThisCommandType
' now open the connection
oConn.Open()
End Sub
Private Sub KillConn()
RF.ConjunctionJunction.CleanUpTime(oCmd, oConn)
End Sub
这是另一个处理连接的vb文件中的其他代码:
Namespace RF
Public Class ConjunctionJunction
''' <summary>
''' Closes the connection and disposes of the command object passed in.
''' </summary>
''' <param name="CommandObject">The command object to clean up</param>
''' <remarks></remarks>
Shared Sub CleanUpTime(ByVal CommandObject As System.Data.SqlClient.SqlCommand, _
ByVal ConnectionObject As System.Data.SqlClient.SqlConnection)
' kill the connection
ConnectionObject.Close()
ConnectionObject.Dispose()
ConnectionObject = Nothing
' kill the command
CommandObject.Dispose()
CommandObject = Nothing
End Sub
End Class
End Namespace
为什么上面的代码可以在Server 2008上运行而不在服务器2012R2上运行?
答案 0 :(得分:0)
Have you tried enabling TLS 1.0 on your Server 2012R2 box?
http://azure.microsoft.com/blog/2014/10/29/protecting-against-the-ssl-3-0-vulnerability/