2009-06-10 15 views
13

A menudo recibo un mensaje de Cliente desconectado. No uso el equilibrio de carga, solo un servidor IIS. Necesito saber qué está causando esto y cómo solucionarlo.Cliente desconectado

Aquí está la información de excepción:

Type: System.Web.HttpException 
Message: The client disconnected. 

Exception Data: 

Source: System.Web 

TargetSite: Void ThrowError(System.Exception, System.String, System.String, Boolean) 

StackTrace: 
    at System.Web.UI.ViewStateException.ThrowError(Exception inner, String persistedState, String errorPageMessage, Boolean macValidationError) 
    at System.Web.UI.ObjectStateFormatter.Deserialize(String inputString) 
    at System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter.Deserialize(String serializedState) 
    at System.Web.UI.Util.DeserializeWithAssert(IStateFormatter formatter, String serializedState) 
    at System.Web.UI.HiddenFieldPageStatePersister.Load() 
    at System.Web.UI.Page.LoadPageStateFromPersistenceMedium() 
    at System.Web.UI.Page.LoadAllState() 
    at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 
+0

Fwiw, parece que hay una pregunta similar ya: http://stackoverflow.com/questions/809413/what-might-be-causing-thethe client-disconnected-asp-net-exception –

+1

@ ChrisW.Rea Sí, pero este especifica un único servidor IIS, mientras que el otro menciona específicamente el equilibrio de carga. La respuesta que estaba buscando es sobre esta pregunta y no sobre la otra. – Michael

Respuesta

1

Es posible que los usuarios están abortando la página posterior a la parte posterior haciendo clic PARADA o volver a cargar en el navegador. ¿Su aplicación tiene algunas páginas que son bastante pesadas, p. un montón de viewstate, y ¿tiene usuarios que están en conexiones más lentas, p. ¿marcar?

+0

Esto no es lo que está sucediendo. Todas las conexiones locales son de 100 MB/1 GB y esto sucede en muchas páginas diferentes. Usamos mucho viewstate y no hay una forma efectiva de evitarlo. El problema parece ocurrir casi al azar. –

+0

¿Cuál es el caso de uso que realmente necesita para evitar que ocurra este error? –

8

TAMBIÉN obtenemos esta excepción, y la obtenemos de manera completamente repetible. Esta excepción se produce cuando el ViewState se ha convertido en "grande" y el usuario hace clic en un botón antes de que se haya completado una solicitud anterior ...

En nuestro caso, esto sucede muy fácilmente porque la publicación posterior usa ajax, por lo que el navegador no No deje de responder mientras se está enviando el ViewState al servidor. Al hacer clic en este control, se produce la excepción una y otra vez.

+0

Esto explica por qué está sucediendo. Así cómo resolver este tipo de problemas si el requisito del cliente es como usted dijo. ¿O podemos ignorar este? – Ajay

+0

Hay un par de formas de reducir el impacto de ViewState. Una forma es crear su propio proveedor de viewstate y dejar de enviarlo por cable. Otra es desactivarlo y hacer el trabajo para que la página funcione sin él. La forma más drástica, y el camino que hemos seguido, es portar sus páginas a MVC. –

2

Esto también ocurre cuando su página le permite al usuario final hacer múltiples devoluciones parciales sin esperar la respuesta. Es decir, suponga una tabla donde un clic en una fila realiza una devolución de datos parcial y le muestra los detalles de esa fila. Ahora, si el usuario hace una fila y sin esperar detalles, hace clic en otra fila ... es probable que ocurra esta excepción.

ASP.NET AJAX abandona la solicitud que ya se está ejecutando cuando se realiza una nueva solicitud asincrónica.

Sin embargo lo que queda es ¿por qué incomprendido IIS permiten dicha solicitud abandonada para llegar a ASP.NET a todos ..

Cuestiones relacionadas