Forum » Programiranje » [.NET]HttpWebRequest preko SSL crkne po drugi zahtevi
[.NET]HttpWebRequest preko SSL crkne po drugi zahtevi
dr. Zgemba ::
Imam eno čudno težavo.
.NET 3.5 (2.0) aplikacija kliče zunani web service preko HTTPS povezave. Ko se klic izvede prvič, gre vse vredu in dobim pravilni response. Ko nato isto stvar kličem naslednjič, mi crkne z 'The underlying connection was closed: The connection was closed unexpectedly.', InnerException ne obstaja.
Vem, da ServicePointManager nekako kešira SSL povezave in sumim, da je nekaj v povezavi s tem. Ne znam pa eksplicitno zahtevati, da se povezava zapre in potem vsakič na novo začeti SSL pogajanja. Forsiral sem Keepalive = False, vedno nov ConnectionGroup in klical GC, da bi ja pozaprl vse kar se da, pa je vedno isti rezultat.
Zunanji web service ni pod mojo kontrolo in upravljalec pravi, da njim deluje vse pravilno ter da z drugimi nimajo nobenih težav.
Koda izgleda takole:
Vsak nasvet bo dobrodošel.
Hvala.
.NET 3.5 (2.0) aplikacija kliče zunani web service preko HTTPS povezave. Ko se klic izvede prvič, gre vse vredu in dobim pravilni response. Ko nato isto stvar kličem naslednjič, mi crkne z 'The underlying connection was closed: The connection was closed unexpectedly.', InnerException ne obstaja.
Vem, da ServicePointManager nekako kešira SSL povezave in sumim, da je nekaj v povezavi s tem. Ne znam pa eksplicitno zahtevati, da se povezava zapre in potem vsakič na novo začeti SSL pogajanja. Forsiral sem Keepalive = False, vedno nov ConnectionGroup in klical GC, da bi ja pozaprl vse kar se da, pa je vedno isti rezultat.
Zunanji web service ni pod mojo kontrolo in upravljalec pravi, da njim deluje vse pravilno ter da z drugimi nimajo nobenih težav.
Koda izgleda takole:
try { HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url); req.ConnectionGroupName = "SSL_Group_" + Environment.TickCount; req.KeepAlive = false; req.ClientCertificates.Add(clientCert); req.ContentType = "application/x-www-form-urlencoded"; req.Method = "POST"; using (StreamWriter reqWriter = new StreamWriter(req.GetRequestStream())) { reqWriter.Write(nafMsg); } using (StreamReader resReader = new StreamReader(req.GetResponse().GetResponseStream())) { string response = resReader.ReadToEnd(); resReader.Close(); } GC.Collect(); // Forsiram GC, da se ja zaprejo vse SSL povezave (upam vsaj) return true; } catch (WebException e) { EventLog.WriteEntry... return false; }
Vsak nasvet bo dobrodošel.
Hvala.
c00L3r ::
Sem imel neko podobno težavo, ko sem programiral za Windows Mobile pred kakim letom. Poskusi zapret StreamWriter reqWriter, ko ga več ne potrebuješ.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [C# asp.NET web forma] Kam zgine cookie oz. zkj se izbriše?Oddelek: Programiranje | 1164 (978) | Morenov |
» | ASP.NET + C# vprašanjeOddelek: Programiranje | 2806 (1820) | Morenov |
» | Avtomatično prepoznati POST spremenljivkeOddelek: Programiranje | 1587 (1380) | AnonimkeOP |
» | [C#] WebResponse vrne error 404Oddelek: Programiranje | 1036 (997) | darkolord |
» | HTTP POSTOddelek: Programiranje | 1767 (1543) | kopernik |