Sto utilizzando un'API gateway di pagamento nella mia applicazione ASP.Net. Quando si esegue il test in MonoDevelop con XSP, l'applicazione funziona. Quando lo configuro per funzionare in apache2 con mod_mono il codice continua a bloccarsi con un errore di timeout.Mono Apache2 HttpWebRequest si blocca con "Timeout della richiesta"
Sono perplesso su cosa potrebbe cambiare con l'hosting in Apache anziché XSP. Comunque sotto è il codice che è timeout:
private string SubmitXml(string InputXml)
{
HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(_WebServiceUrl);
webReq.Method = "POST";
byte[] reqBytes;
reqBytes = System.Text.Encoding.UTF8.GetBytes(InputXml);
webReq.ContentType = "application/x-www-form-urlencoded";
webReq.ContentLength = reqBytes.Length;
webReq.Timeout = 5000;
Stream requestStream = webReq.GetRequestStream();
requestStream.Write(reqBytes, 0, reqBytes.Length);
requestStream.Close();
HttpWebResponse webResponse = (HttpWebResponse)webReq.GetResponse();
using (StreamReader sr = new StreamReader(webResponse.GetResponseStream(), System.Text.Encoding.ASCII))
{
return sr.ReadToEnd();
}
}
Il codice si blocca sulla linea: Stream requestStream = webReq.GetRequestStream();
L'errore riscontrato è:
La richiesta è scaduta
Descrizione : HTTP 500. Errore durante l'elaborazione della richiesta.
dello stack:
System.Net.WebException: La richiesta è scaduta a System.Net.HttpWebRequest.GetRequestStream() [0x0005f] in /private/tmp/monobuild/build/BUILD/mono 2.10.9/mcs/class/System/System.Net/HttpWebRequest.cs: 746 a TCShared.PxPay.SubmitXml (System.String InputXml) [0x00048] in /Users/liam/Projects/techcertain/techcertaincsharp/Componenti/TCShared/PaymentGateways/Client/PxPay.cs: 85 a TCShared.PxPay.GenerateRequest (input TCShared.RequestInput) [0x00015] in /Users/liam/Projects/techcertain/techcertaincsharp/Components/TC Condiviso/PaymentGateways/cliente/PxPay.cs: 69
Nel mio web.config ho il seguente come il timeout di richiesta:
<httpRuntime executionTimeout="43200" maxRequestLength="104856" requestValidationMode="2.0" />
Ho provato a cambiare il valore di timeout sul HttpWebRequest ma sta ancora scadendo.
Che cosa sta causando questo e come posso risolverlo?
Hey, sto avendo lo stesso problema che hai avuto, solo che l'eliminazione di Mono.Security non l'ha risolto per me. Questo è coerente in due diverse installazioni linux e mono su win. Hai qualche idea di cos'altro dovrei provare? – Pablote
Ciao, potresti provare a utilizzare una versione diversa di Mono. Sto usando la versione 2.10.8 sul mio Mac e HttpWebRequest sta funzionando. Quando ho aggiornato la versione mono alla versione 2.10.9 HttpWebRequest ha smesso di funzionare, quindi ho dovuto eseguire il downgrade alla 2.10.8. – startupsmith
Eliminazione di Mono.Security.ho risolto questo problema per me, ma devi assicurarti di cancellarlo da qualsiasi cartella in cui hai la DLL di origine (il riferimento del progetto rimanda a) più la tua cartella Bin/Debug | Release, dato che sarebbe stata copiata da quella precedente . – t9mike