Estoy usando una API de puerta de enlace de pago en mi aplicación ASP.Net. Cuando se prueba en MonoDevelop con XSP, la aplicación funciona. Cuando lo configuro para ejecutar en apache2 con mod_mono, el código sigue fallando con un error de tiempo de espera.Mono Apache2 HttpWebRequest se bloquea con "La solicitud agotó el tiempo de espera"
No estoy seguro de qué podría cambiar con el alojamiento en Apache en lugar de XSP. De todas formas a continuación es el código que se el tiempo de espera:
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();
}
}
El código se bloquea en la línea: Stream requestStream = webReq.GetRequestStream();
El error devuelto es:
La solicitud timed out
Descripción : HTTP 500. Solicitud de procesamiento de error.
Seguimiento de la pila:
System.NET.WebException: La solicitud ha caducado en System.Net.HttpWebRequest.GetRequestStream() [0x0005f] en /private/tmp/monobuild/build/BUILD/mono 2.10.9/mcs/class/System/System.Net/HttpWebRequest.cs: 746 en TCShared.PxPay.SubmitXml (System.String InputXml) [0x00048] en /Users/liam/Projects/techcertain/techcertaincsharp/Components/TCShared/PaymentGateways/Client/PxPay.cs: 85 en TCShared.PxPay.GenerateRequest (entrada TCShared.RequestInput) [0x00015] en /Users/liam/Projects/techcertain/techcertaincsharp/Components/TC Shared/PaymentGateways/cliente/PxPay.cs: 69
En mi Web.Config tengo el siguiente como la solicitud de tiempo de espera:
<httpRuntime executionTimeout="43200" maxRequestLength="104856" requestValidationMode="2.0" />
He intentado cambiar el valor de tiempo de espera en el HttpWebRequest pero todavía está saliendo el tiempo.
¿Qué está causando esto y cómo puedo solucionarlo?
Hola, estoy teniendo el mismo problema que tú, solo que eliminar Mono.Security no me lo arregló. Esto es consistente en dos instalaciones de linux diferentes y mono on win también. ¿Tienes alguna idea de qué más debería probar? – Pablote
Hola, podrías intentar usar una versión diferente de Mono. Estoy usando la versión 2.10.8 en mi mac y HttpWebRequest está funcionando. Cuando actualicé mono a la versión 2.10.9, HttpWebRequest dejó de funcionar, por lo que tuve que volver a degradar a 2.10.8. – startupsmith
Eliminando Mono.Security.dll me arregló esto, pero necesita asegurarse de que lo elimine tanto de la carpeta en la que tenga el dll de origen (los puntos de referencia del proyecto) como su carpeta Bin/Debug | Release, ya que se habría copiado allí desde la compilación anterior . – t9mike