Problem: Ich erhalte die Ausnahme "Die zugrunde liegende Verbindung wurde geschlossen: Ein unerwarteter Fehler trat bei einem Versand auf" in meinen Protokollen und es bricht unsere OEM-Integration in unser E-Mail-Marketing-System zu zufälligen Zeiten zwischen [1 Stunde - 4 Stunden].
Meine Website wird auf einem Windows Server 2008 R2 mit IIS 7.5.7600 gehostet. Diese Website enthält eine große Anzahl von OEM-Komponenten und ein umfassendes Dashboard. Mit allen anderen Elementen der Website funktioniert alles einwandfrei, mit Ausnahme einer unserer E-Mail-Marketing-Komponenten, die wir als Iframe-Lösung in unserem Dashboard verwenden. Die Art und Weise, wie es funktioniert, ist, ich sende ein httpWebRequestobject mit allen Anmeldeinformationen und ich bekomme eine URL zurück, die ich in einen Iframe eingefügt habe und es funktioniert. Aber es funktioniert nur für einige Zeit [1 Stunde - 4 Stunden] und dann erhalte ich die folgende Ausnahme: "Die zugrunde liegende Verbindung wurde geschlossen: Ein unerwarteter Fehler trat beim Senden auf" und selbst wenn das System versucht, die URL von httpWebRequest abzurufen schlägt mit der gleichen Ausnahme fehl. Die einzige Möglichkeit, es wieder zum Laufen zu bringen, besteht darin, den Anwendungspool zu recyceln oder irgendetwas in web.config zu bearbeiten.
Option ausprobiert
Explizit hinzugefügt, keep-alive = false
keep-alive = true
Erhöhte die Auszeit: <httpRuntime maxRequestLength="2097151" executionTimeout="9999999" enable="true" requestValidationMode="2.0" />
Ich habe diese Seite auf eine Nicht-SSL-Website hochgeladen, um zu überprüfen, ob das SSL-Zertifikat auf unserem Produktionsserver die Verbindung herstellt, um einige Schritte zu trennen.
Jede Richtung zur Auflösung wird sehr geschätzt.
Code:
Public Function CreateHttpRequestJson(ByVal url) As String
Try
Dim result As String = String.Empty
Dim httpWebRequest = DirectCast(WebRequest.Create("https://api.xxxxxxxxxxx.com/api/v3/externalsession.json"), HttpWebRequest)
httpWebRequest.ContentType = "text/json"
httpWebRequest.Method = "PUT"
httpWebRequest.ContentType = "application/x-www-form-urlencoded"
httpWebRequest.KeepAlive = False
'ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3
'TODO change the integratorID to the serviceproviders account Id, useremail
Using streamWriter = New StreamWriter(httpWebRequest.GetRequestStream())
Dim json As String = New JavaScriptSerializer().Serialize(New With { _
Key .Email = useremail, _
Key .Chrome = "None", _
Key .Url = url, _
Key .IntegratorID = userIntegratorID, _
Key .ClientID = clientIdGlobal _
})
'TODO move it to the web.config, Following API Key is holonis accounts API Key
SetBasicAuthHeader(httpWebRequest, holonisApiKey, "")
streamWriter.Write(json)
streamWriter.Flush()
streamWriter.Close()
Dim httpResponse = DirectCast(httpWebRequest.GetResponse(), HttpWebResponse)
Using streamReader = New StreamReader(httpResponse.GetResponseStream())
result = streamReader.ReadToEnd()
result = result.Split(New [Char]() {":"})(2)
result = "https:" & result.Substring(0, result.Length - 2)
End Using
End Using
Me.midFrame.Attributes("src") = result
Catch ex As Exception
objLog.WriteLog("Error:" & ex.Message)
If (ex.Message.ToString().Contains("Invalid Email")) Then
'TODO Show message on UI
ElseIf (ex.Message.ToString().Contains("Email Taken")) Then
'TODO Show message on UI
ElseIf (ex.Message.ToString().Contains("Invalid Access Level")) Then
'TODO Show message on UI
ElseIf (ex.Message.ToString().Contains("Unsafe Password")) Then
'TODO Show message on UI
ElseIf (ex.Message.ToString().Contains("Invalid Password")) Then
'TODO Show message on UI
ElseIf (ex.Message.ToString().Contains("Empty Person Name")) Then
'TODO Show message on UI
End If
End Try
End Function
Public Sub SetBasicAuthHeader(ByVal request As WebRequest, ByVal userName As [String], ByVal userPassword As [String])
Dim authInfo As String = Convert.ToString(userName) & ":" & Convert.ToString(userPassword)
authInfo = Convert.ToBase64String(Encoding.[Default].GetBytes(authInfo))
request.Headers("Authorization") = "Basic " & authInfo
End Sub`