GetRequestStream () Devolviendo el tiempo de venta de WebException ... pero solo en algunas máquinas
-
20-12-2019 - |
Pregunta
La excepción se lanza al primer "usando":
usando (Var OS= FirstRequest.getRequestStream ())
Mi conjetura ahora es que tiene que ver con el problema de confianza SSL iniciado por el servidor, pero si eso es cierto, lo que es lo diferente entre las 4 máquinas de Windows 7 Pro que están funcionando bien y 2 lanzando esa excepción,
Detalles de excepciones:
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:
¿Qué podría ser?
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;
}
Solución
Fue problema de certificado SSL que fue manejado mal por el servidor.
Cuando se redirige a un servidor diferente, todo funciona en todos los escenarios.
También se resuelve en el lado del cliente al actualizar .NET 4 a .NET 4.5
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow