2009-06-10 9 views
13

종종 클라이언트 연결이 끊어졌습니다. 로드 밸런싱은 사용하지 않습니다 - 단 하나의 IIS 서버. 이 문제를 일으키는 원인과 해결 방법을 알아야합니다. 여기 클라이언트 연결이 끊어졌습니다.

예외 정보입니다 :

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가 보인다 .. ununderstood 이유는 IIS는 포기 요청이 전혀 ASP.NET에 도달 할 수 있도록 않는 것입니다 남아 : http://stackoverflow.com/questions/809413/what-might-be-causing-thethe-client-disconnected-asp-net-exception –

+1

@ ChrisW.Rea 네, 그러나 이것은 하나의 IIS 서버를 지정합니다. 다른 IIS 서버는로드 밸런싱을 특별히 언급합니다. 내가 찾던 대답은이 질문에 관한 것이지 다른 것에 대한 대답은 아닙니다. – Michael

답변

1

그것은 사용자가 브라우저에서 STOP 또는 RELOAD를 클릭하여 페이지 포스트 백을 중단하는 것이 가능하다. 응용 프로그램에 꽤 무거운 페이지가 있습니까? 예 : viewstate가 많으며 느린 연결을 사용하는 사용자가 있습니까? 전화 접속?

+0

이것은 무슨 일이 일어나고있는 것이 아닙니다. 모든 로컬 연결은 100MB/1GB이며 이는 여러 페이지에서 발생합니다. 우리는 많은 viewstate를 사용하고 그 주위에는 효과적인 방법이 없습니다. 문제는 거의 무작위로 발생하는 것 같습니다. –

+0

실제로이 오류가 발생하지 않도록하는 데 필요한 사용 사례는 무엇입니까? –

8

우리도이 예외를 얻었고 완전히 반복 할 수 있습니다. 이 예외는 ViewState이 "커다란"상태가되고 이전 요청이 완료되기 전에 사용자가 버튼을 클릭하면 throw됩니다.

이 경우에는 포스트 백이 아약스를 사용하기 때문에 매우 쉽게 발생합니다. ViewState이 서버로 전송되는 동안 응답을 중지합니다. 이 컨트롤을 클릭하면 예외가 반복해서 발생합니다.

+0

이것은 왜 일어나는지를 설명합니다. 클라이언트 요구 사항이 당신이 말한 것과 같은 경우이 유형의 문제를 해결하는 방법입니다. 우리는 이것을 무시할 수 있습니까? – Ajay

+0

ViewState의 영향을 줄이는 데는 몇 가지 방법이 있습니다. 한 가지 방법은 자신의 viewstate 공급자를 만들고 전선을 통해 전달하는 것입니다. 또 다른 방법은 페이지 기능을 사용하지 않고 페이지 기능을 사용하지 않고 작동시키는 것입니다. 가장 과감한 방법과 우리가 이끌어가는 길은 페이지를 MVC로 이식하는 것입니다. –

2

이는 최종 사용자가 응답을 기다리지 않고 여러 부분적인 부분 게시를 허용 할 때도 발생합니다. 의미, 행을 클릭하면 부분 포스트 백이 수행되는 테이블을 가정하고 그 행의 세부 정보를 보여줍니다. 이제 사용자 한 행과 세부 사항을 기다리지 않고 다른 행을 클릭하면 ... 발생 가능성이있는 예외입니다.

ASP.NET AJAX는 새로운 비동기 요청이있을 때 이미 실행중인 요청을 취소합니다.

그러나 무엇 비슷한 질문이 이미처럼

관련 문제