GetRequestStream() retornando o tempo limite de WebException… mas apenas em algumas máquinas
-
20-12-2019 - |
Pergunta
A exceção é lançada no primeiro "usando":
Usando (var OS = FirstreCest.getRequestStream ())
meu palpite agora é que isso tem a ver com o problema de confiança SSL iniciado pelo servidor, mas se isso for verdade, qual é a diferença entre as 4 máquinas Windows 7 Pro, das quais 2 estão funcionando bem e 2 lançando essa exceção,
Detalhes da exceção:
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:
O que poderia 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;
}
Solução
Era Problema de certificado SSL que foi mal tratado pelo servidor.quando redirecionado para um servidor diferente, tudo funciona em todos os cenários.
também resolvido no lado do cliente atualizando .net 4 para .net 4.5
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow