Tehnoloogia » Arendus ja andmetehnoloogiad » X-tee server


 
X-tee server
estimaestima
Posted: 09. apr 2010, 09:51 Vasta  |  Tsiteeri  

Tere kõigile kas on siin inimesi kes X-tee serveriga on tegelenud ? Probleem on just selline et saates vastu X-tee serverit SOAP ümbrikus pikemat xml-i tekib "timeout". C# kood on standartne (XML on kõõik korras - kontrollitud!, SOAP ümbrik on samuti korrektne):

Uri dataURL = new Uri(proxyURL);
WebRequest request = WebRequest.Create(dataURL);
request.Method = "POST";
request.ContentType = "text/xml; charset=UTF-8";
request.Headers.Set("SOAPAction", "");
byte[] bytes = null;
bytes = System.Text.Encoding.UTF8.GetBytes(payload); // UTF8!
request.ContentLength = bytes.Length;
Stream outputStream = request.GetRequestStream();
outputStream.Write(bytes, 0, bytes.Length);
outputStream.Flush();
outputStream.Close();

request.Timeout = System.Threading.Timeout.Infinite;
WebResponse response = request.GetResponse();  <<<<--- SIIN TEKKIB TIMEOUT VIGA

 

Lugupidamisega

 

GunnarGunnar
Posted: 13. apr 2010, 09:05 Vasta  |  Tsiteeri  

See tundub olevat probleem X-Tee serveri otsas. Kui on juurdepääs selle logidele, siis võiks sealt uurida, kas andmed jäävad sinna pidama või on teises otsas oleval teenusel probleeme. .NET mure see mulle kuidagi ei tundu.

karlheeringkarlheering
Posted: 17. apr 2010, 04:12 Vasta  |  Tsiteeri  

Tuleb välja, et probleem on ikka .Net-s. Timeout-i muutmine pikemaks kui 100 sek. peale GetRequestStream väljakutsumist enam ei mõju. Tundub, et sügavustes luuakse Socket vaikeväärtusega ja pärast seda enam ei muudeta. Väiksem väärtus mõjub kuna selle eest hoolitseb WebRequest/WebHttpRequest ise. Soovitu oleks request.Timeout = System.Threading.Timeout.Infinite teha vahetult peale WebRequest request = WebRequest.Create(dataURL);
 

estimaestima
Posted: 20. apr 2010, 09:38 Vasta  |  Tsiteeri  

jah, see on tõesti õige lahendus!!!

Uri dataURL = new Uri(proxyURL);
WebRequest request = WebRequest.Create(dataURL);
request.Timeout = System.Threading.Timeout.Infinite; // <---- !!!!!! peab olema ainult SIIN siis töötab

request.Method = "POST";
request.ContentType = "text/xml; charset=UTF-8";
request.Headers.Set("SOAPAction", "");
byte[] bytes = null;
bytes = System.Text.Encoding.UTF8.GetBytes(payload); // UTF8!
request.ContentLength = bytes.Length;
Stream outputStream = request.GetRequestStream();
outputStream.Write(bytes, 0, bytes.Length);
outputStream.Flush();
outputStream.Close();
WebResponse response = request.GetResponse();

 

Tänan kõiki !

 

melborpmelborp
Posted: 14. mai 2010, 10:08 Vasta  |  Tsiteeri  

Tänud jagamast. Väga kasulik tähelepanek!