I get this exception and that is the issue:-
The underlying connection was closed: An unexpected error occurred on a send.
My website is hosted on a Windows Server 2008 R2 with IIS 7.5.7600. This website has a large number of OEM components, and a comprehensive dashboard. Everything works fine with all the other elements of the website except with one of our e-mail marketing components which we are using as an iframe solution within our dashboard. The way it works is, I send a HttpWebRequest object with all the credentials, and I get a url back which I put in an iframe and it works.
But it only works for some time (1-4 hours), and then from the call to
webRequest.GetResponse();
I get the exception
The underlying connection was closed: An unexpected error occurred on a send.
Even if the system tries to get the URL from the httpWebRequest it fails with the same exception.
The only way to make it work again is:
I am really exhausted from all the options that I could think of. Any leads will be beneficial!!
I tried explicitly adding:-
I have uploaded this page to a non SSL website to check if the SSL certificate on our production server is making the connection to drop somehow. Any direction toward resolution is greatly appreciated.
Code mentioned below:-
Public Function CreateHttpRequestJson(ByVal url) As String 
  Try 
        Dim result As String = String.Empty 
        Dim httpWebRequest = DirectCast(WebRequest.Create, 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