GetRequestStream() returning WebException time out ... but only on some machines

3.3k views Asked by At

Exception is thrown at the first "using":
using (var os = firstRequest.GetRequestStream())

my guess now is that it has to do with ssl trust issue initiated by the server, but if that is true , than what's the different between the 4 windows 7 pro machines which 2 are working fine and 2 throwing that exception,

Exception Details:

System.Net.WebException was unhandled
  Message=The operation has timed out
  Source=System
  StackTrace:
       at System.Net.HttpWebRequest.GetRequestStream(TransportContext& context)
       at System.Net.HttpWebRequest.GetRequestStream()
       at MyCheckAPI.MyCheckLogic2.HttpPost4(String URI, String URI2, String Parameters1, String Parameters2) in C:\Users\Ha-Erez\Desktop\RichTB\RichTB\MyCheckLogic2.cs:line 309
       at MyCheckAPI.MyCheckLogic2.MobileGetCode2(String email, String pass) in C:\Users\Ha-Erez\Desktop\RichTB\RichTB\MyCheckLogic2.cs:line 444
       at RichTB.Integration.button5_Click(Object sender, EventArgs e) in C:\Users\Ha-Erez\Desktop\RichTB\RichTB\Form1.cs:line 348
       at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
       at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
       at System.Windows.Forms.Control.WndProc(Message& m)
       at System.Windows.Forms.ButtonBase.WndProc(Message& m)
       at System.Windows.Forms.Button.WndProc(Message& m)
       at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
       at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
       at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
       at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
       at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
       at RichTB.Program.Main() in C:\Users\Ha-Erez\Desktop\RichTB\RichTB\Program.cs:line 18
       at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
       at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()
  InnerException: 

What could it be ?

public static string HttpPost4(string URI, string URI2, string Parameters1, string Parameters2)  
{
       string respStr = String.Empty;
       CookieContainer cookieJar = new CookieContainer();
       HttpWebRequest firstRequest = (HttpWebRequest)WebRequest.Create(URI);
       try
       {
            firstRequest.CookieContainer = cookieJar;
            firstRequest.KeepAlive = true;
            firstRequest.ContentType = "application/x-www-form-urlencoded";
            firstRequest.Method = "POST";
            firstRequest.KeepAlive = false;
            firstRequest.Timeout = 5000;
            firstRequest.Proxy = null;
            firstRequest.ServicePoint.ConnectionLeaseTimeout = 5000;
            firstRequest.ServicePoint.MaxIdleTime = 5000;

             byte[] bytes = System.Text.Encoding.UTF8.GetBytes(Parameters1);
             firstRequest.ContentLength = bytes.Length;
             using (var os = firstRequest.GetRequestStream())
             {     
                 os.Write(bytes, 0, bytes.Length);
                os.Close();
             }

             using (HttpWebResponse firstResponse = (HttpWebResponse)firstRequest.GetResponse())
                     {
                         using (var sr = new StreamReader(firstResponse.GetResponseStream()))
                         {

                             respStr = sr.ReadToEnd().Trim();
                             Logger(DateTime.Now + " Login Response: " + respStr, 1);

                             sr.Close();
                         }
                         firstResponse.Close();
                     }

                     //  cookieJar.Add(firstResponse.Cookies);

                     HttpWebRequest secondRequest = (HttpWebRequest)WebRequest.Create(URI2);
                     secondRequest.Method = "POST";
                     secondRequest.ContentType = "application/x-www-form-urlencoded";
                     // secondRequest.KeepAlive = true;

                     secondRequest.KeepAlive = false;
                     secondRequest.Timeout = 5000;

                     secondRequest.ServicePoint.ConnectionLeaseTimeout = 5000;
                     secondRequest.ServicePoint.MaxIdleTime = 5000;

                     // secondRequest.Headers["Set-Cookie"] = firstResponse.Headers["Set-Cookie"];
                     secondRequest.CookieContainer = cookieJar;
                     byte[] bytes2 = System.Text.Encoding.UTF8.GetBytes(Parameters2);
                     secondRequest.ContentLength = bytes2.Length;
                     //   httpWebRequest.
                     using (var os2 = secondRequest.GetRequestStream())
                     {
                         os2.Write(bytes2, 0, bytes2.Length);
                         os2.Close();
                     }
                     using (WebResponse secondResponse = secondRequest.GetResponse())
                     {
                         using (var sr = new StreamReader(secondResponse.GetResponseStream()))
                         {

                             respStr = sr.ReadToEnd().Trim();
                             sr.Close();
                         }
                     }

                     return respStr;
                 }
                 catch (Exception ee)
                 {
                     Logger(DateTime.Now + " , "+ ee.Message +" , "+ ee.StackTrace, 1);
                 }
                 finally
                 {
                     firstRequest.Abort();
                 }
                return respStr;
             }
1

There are 1 answers

0
Elazaron On BEST ANSWER

It was SSL certificate issue which was handled poorly by the server. when redirected to a different server, everything works in all scenarios.
also solved on the client side by upgrading .net 4 to .net 4.5