2013-08-01 2 views
3

Visual Studio 디버거에서 MVC4 웹 사이트를 실행할 때 문제가 발생합니다. 너무 많은 페이지가 열리면 아약스 요청을 보내는 데 시간이 오래 걸립니다. 매우 이상한 점은 페이지 중 하나를 닫으면 요청이 즉시 시작된다는 것입니다.아약스 요청시 매우 긴 "대기"시간

자세한 내용 ... 프레임 워크 : MVC 4 IDE : 비주얼 스튜디오 2010 브라우저 : IE 9/크롬

컨트롤러 : 내가 AsyncController 및 상속 모두이 시도했다

[Authorize] 
[SessionState(SessionStateBehavior.Disabled)] 
public class AnalyticsController 
    : Controller 
{   
    public ActionResult SaveWorkspace(Workspace model) 
    { 
     var returnVal = _save(model); 
     return Json(new { actionResult = returnVal, messages = new string[] {} }); 
    } 
} 

동일한 결과를 가진 컨트롤러에서.

는 클라이언트 :

$.ajax({ 
    url: '/Analytics/SaveWorkspace', 
    type: "POST", 
    dataType: "json", 
    contentType: "application/json; charset=utf-8", 
    data: JSON.stringify(workspace), 
    success: function (result) { 
     alert("Function Executed"); 
    } 
}); 

은 위 내가 사용하는 아약스 호출입니다. 내가하는 일은 웹 페이지의 여러 링크를 클릭하면 새 창이 열립니다. 테스트를 위해 디버거에서 초기 브라우저를 열었고 메인 페이지에서 5 개의 다른 브라우저를 생성했습니다. 위의 호출은 디버거가 시작한 창에서 즉시 실행되지만 네트워크 캡처에서 요청을 볼 때 결국 시간이 초과 될 때까지 "보류 중"이라고 표시됩니다.

흥미로운 점은 내가 생성 한 창 중 하나를 닫으면 요청이 보류 상태에서 변경되고 내 컨트롤러로 이동하여 예상대로 돌아올 수 있다는 것입니다. 조금 더 놀고, 다시 시도하면 (추가 브라우저를 열지 않음) 즉시 서버로 전송되지만, 다섯 번째 브라우저를 열면 다시 느려집니다. 특정 창에 아무 것도 잘못되지 않았 음을 확인하기 위해 여러 가지 테스트를 수행했으며, 요청하지 않은 5 개의 브라우저가있는 것으로 보입니다.

다음은 제 5 브라우저 창을 닫을 때 성공한 요청의 스크린 샷입니다. 여기 Success

여기 enter image description here

여기 enter image description here

내 타이밍 enter image description here

중요한 것은 캡처입니다 내 응답 헤더의 캡처 내 요청 헤더의 캡처입니다 46 초 대기 기간이 있고 그 다음에 두 개의 시작 기간이있는 이유는 실제로 이해할 수 없습니다. 첫 번째 시작 기간은 길었고, 다섯 번째 브라우저 창을 닫으면 두 번째 시작이 발생했습니다.

나는 무슨 일이 일어나고 있는지 진단하는 데 도움이되는 데이터와 가능한 한 자세하게 설명하려고 노력했다. 더 좋은 그림을 그리기 위해 할 수있는 일이 있다면, 언제든지 댓글을 남길 수 있습니다. 어떤 제안이라도 환영 할 만하다.

감사합니다.

+0

컨트롤러 액션에서이'_save (model) '메소드가 실제로 무엇을하는지 설명하지 못했습니다. 이 문제를 더 디버깅하기 위해 나는 컨트롤러 액션을 추가로 연기하고이'_save' 호출을 제거하는 것으로 시작합니다. 지금 같은 행동을 볼 수 있습니까? 그렇지 않다면, 문제가이'_save' 메소드에 있음이 분명합니다. 그렇다면, 꽤 이상합니다. 또한 어떻게 IE를 사용하여 웹 개발을 할 수 있습니까? Internet Explorer가 아닌 웹 브라우저를 사용해보십시오. –

+0

요청이 보류 중이기 때문에이 시점까지 만들지 않기 때문에 _save (모델)라고 생각하지 않습니다. 이 코드를 제거하면 여전히 동일한 문제가 발생합니다. – mvcNewbie

답변

2

당신은 IE8에서 6 단일 도메인에 대한 최대 연결 수에 대한 제한을 타격 할 수 있습니다. (See here for details.) 나는 IE9에 대해 잘 모르겠다. 그러나 그것에 관해 보도 자료가 없었기 때문에 나는 그것이 바뀌지 않았다고 생각할 것이다. 또한 SO post에 따르면 Chrome에서는 6입니다. 6 개의 브라우저 창에 장시간 실행중인 요청이 열려있어 7 번째 아약스 호출을 차단할 수 있습니까?

같은 SO 포스트

은 연결 제한은 파이어 폭스 8, 그래서 아마 그에서 응용 프로그램을 실행하고 문제가 여전히 존재하는지 여부를보고 시도 할 수 있다고 말한다.

+0

Polly 입력에 감사드립니다.이 문제에 대해서는 머리에 못을 박았습니다. 이제는 문제가 무엇인지 알았으므로이 문제를 처리하는 방법은 내 코드에서 분명 해졌다. 다시 한 번 감사드립니다! – mvcNewbie

0

다음과 같은 이유가 있습니다. 코드 어딘가에 중단 점이 있습니다. 아마 그것은 자바 스크립트에 있습니다 (브라우저 요청을 닫은 후 즉시). 따라서 중단 점을 비활성화하거나 디버거를 일시 중지하여 진행 상황을 확인하는 데 도움이되지 않는 경우.

+0

디버거에 중단 점이 설정되어 있지 않으며 동일한 문제가 발생했는지 확인했습니다. – mvcNewbie

+0

사용하는 서버는 무엇입니까? Iis, iis express, webdev? –

0

나는 problem with IE 8 debugging을 알고 있으며 IE 9에도 적용되는지는 잘 모르겠지만 여러 개의 열린 창/탭과 관련이 있습니다. 시도 해봐.

+0

크롬에서도 테스트를 해본 결과 동일한 문제가 발생합니다. – mvcNewbie

관련 문제