asp.net - error - the remote host closed the connection csgo
El host remoto cerró la conexión. El código de error es 0x800704CD (6)
Como mencionó m.edmondson, "el host remoto cerró la conexión". ocurre cuando un usuario o navegador cancela algo , o la conexión de red cae, etc. Sin embargo, no necesariamente tiene que ser una descarga de archivos, simplemente cualquier solicitud de un recurso que genere una respuesta al cliente. Básicamente, el error significa que la respuesta no se pudo enviar porque el servidor ya no puede hablar con el cliente (navegador).
Hay una serie de pasos que puede seguir para evitar que suceda. Si está enviando manualmente algo en la respuesta con Response.Write, Response.Flush, devolviendo datos de un servicio web / método de página o algo similar, entonces debería considerar comprobar Response.IsClientConnected antes de enviar la respuesta. Además, si es probable que la respuesta lleve mucho tiempo o que se requiera mucho procesamiento en el lado del servidor, debe verificar esto periódicamente hasta que se responda. Vea lo siguiente para detalles sobre esta propiedad:
http://msdn.microsoft.com/en-us/library/system.web.httpresponse.isclientconnected.aspx
Alternativamente, lo que creo que es más probable en su caso, el error está causado por algo dentro del marco. El siguiente enlace puede ser de uso:
La siguiente publicación de desbordamiento de pila también podría ser de interés:
"El host remoto cerró la conexión" en Response.OutputStream.Write
Recibo correos electrónicos de error de mi sitio web cada vez que ocurre una excepción. Estoy recibiendo este error:
El host remoto cerró la conexión. El código de error es 0x800704CD
y no sé por qué Recibo alrededor de 30 por día. No puedo reproducir el error tampoco, así que no puedo rastrear el problema.
El sitio web es ASP.NET 2 ejecutándose en IIS7.
Stack trace:
en System.Web.Hosting.IIS7WorkerRequest.RaiseCommunicationError (resultado Int32, Boolean throwOnDisconnect) en System.Web.Hosting.IIS7WorkerRequest.ExplicitFlush () en System.Web.HttpResponse.Flush (Boolean finalFlush) en System.Web.HttpResponse.Flush ( ) en System.Web.HttpResponse.End () en System.Web.UI.HttpResponseWrapper.System.Web.UI.IHttpResponse.End () en System.Web.UI.PageRequestManager.OnPageError (Object remitente, EventArgs e) en System .Web.UI.TemplateControl.OnError (EventArgs e) en System.Web.UI.Page.HandleError (Excepción e) en System.Web.UI.Page.ProcessRequestMain (Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) en System.Web.UI. Page.ProcessRequest (Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) en System.Web.UI.Page.ProcessRequest () en System.Web.UI.Page.ProcessRequestWithNoAssert (HttpContext context) en System.Web.UI.Page.ProcessRequest (HttpContext context) en ASP.default_aspx.ProcessRequest (contexto HttpContext) en System.Web.H ttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute () en System.Web.HttpApplication.ExecuteStep (paso IExecutionStep, Boolean y completedSynchronously)
Estaba obteniendo esto en un sitio asp.net 2.0 iis7 Windows2008. El mismo código en iis6 funcionó bien. Me estaba causando un problema porque estaba estropeando el proceso de inicio de sesión. El usuario se conectaba y obtenía un 302 en default.asxp, que pasaría por page_load, pero no tan lejos como el pre-render antes de que iis7 enviara un 302 de vuelta a login.aspx sin la cookie de autenticación. Empecé a jugar con la configuración del conjunto de aplicaciones, y por alguna razón, "habilitar aplicaciones de 32 bits" parece haberlo solucionado. No tengo idea de por qué, ya que este sitio no está haciendo nada especial que requiera controladores de 32 bits. Tenemos algunos sitios que todavía usan Access que requieren 32 bits, pero no nuestros sitios SQL directos como este.
Lo tengo todo el tiempo. Significa que el usuario comenzó a descargar un archivo y luego falló o lo canceló .
Para reproducir la excepción, intente hacerlo usted mismo; sin embargo, no conozco ninguna forma de prevenirlo (excepto para manejar esta excepción específica solamente).
Debes decidir cuál es la mejor forma de avanzar según tu aplicación.
También obtuve este mismo error en mi controlador de imagen que escribí. Lo obtuve como 30 veces al día en el sitio con mucho tráfico, y pude reproducirlo también. Usted obtiene esto cuando un usuario cancela la solicitud (cierra la página o se interrumpe su conexión a Internet, por ejemplo), en mi caso en la siguiente fila:
myContext.Response.OutputStream.Write(buffer, 0, bytesRead);
No se me ocurre ninguna manera de prevenirlo, pero tal vez puedas manejar esto de manera adecuada. Ex:
try
{
…
myContext.Response.OutputStream.Write(buffer, 0, bytesRead);
…
}catch (HttpException ex)
{
if (ex.Message.StartsWith("The remote host closed the connection."))
;//do nothing
else
//handle other errors
}
catch (Exception e)
{
//handle other errors
}
finally
{//close streams etc..
}
Uno puede reproducir el error con el siguiente código:
public ActionResult ClosingTheConnectionAction(){
try
{
//we need to set buffer to false to
//make sure data is written in chunks
Response.Buffer = false;
var someText = "Some text here to make things happen ;-)";
var content = GetBytes( someText );
for(var i=0; i < 100; i++)
{
Response.OutputStream.Write(content, 0, content.Length);
}
return View();
}
catch(HttpException hex)
{
if (hex.Message.StartsWith("The remote host closed the connection. The error code is 0x800704CD."))
{
//react on remote host closed the connection exception.
var msg = hex.Message;
}
}
catch(Exception somethingElseHappened)
{
//handle it with some other code
}
return View();
}
Ahora ejecuta el sitio web en modo de depuración. Coloque un punto de interrupción en el ciclo que escribe en la secuencia de salida. Vaya a ese método de acción y, después de la primera iteración, cierre la pestaña del navegador. Presione F10 para continuar el ciclo. Después de que llegue a la siguiente iteración, verá la excepción. Disfruta de tu excepción :-)
WebRequest
este error cuando leí dinámicamente datos de una WebRequest
y nunca cerré la Response
.
protected System.IO.Stream GetStream(string url)
{
try
{
System.IO.Stream stream = null;
var request = System.Net.WebRequest.Create(url);
var response = request.GetResponse();
if (response != null) {
stream = response.GetResponseStream();
// I never closed the response thus resulting in the error
response.Close();
}
response = null;
request = null;
return stream;
}
catch (Exception) { }
return null;
}