2013-04-09 1 views
2

이상한 문제가 있습니다. 항상 그런 것은 아니지만 동일한 요청이있는 경우가 있습니다. 내 웹 사이트 (localhost)에서 Autoloading이있는 ExtJS 저장소가 있고 페이지로드 (F5 버튼 누름) 후 서버의 일부 처리기 (* .ashx)에서 JSON이 읽습니다. 처리기는 DB에서 데이터를 가져 와서 JSON으로 직렬화합니다. 그것은 F5를 5 번 눌러 4 번 작동합니다. 5 번 째 json-reader는 success = false와 0 length 데이터를 보여줍니다.ExtJS : 너무 빠른 핸들러의 응답이 실패하는 경우가 있습니다.

나는 같은 핸들러에서 시간 지연을 사용하는 경우 :

System.Threading.Thread.Sleep(1000); 

그것은 (50)의 49 시간을 작동하지만 내가 빠르게 웹 사이트를 만들려고 할 때, 내 응답 대기 시간을 설정하는 이상한입니다.

문제에 대한 정보가 충분하지 않으면 도움을 요청하십시오. 여기

내 JS의 샘플입니다 :

storePrefixes.on({ 
     'beforeload': function() { 
      //... 
     }, 
     'load': { 
      fn: function() { 
       if (storePrefixes.data.items.length > 0) 
        // ... working with response 
       else 
        // here is a problem 
      }, 
      single: true 
     } 
    }); 

그리고 서버 코드가있다 :

<%@ WebHandler Language="C#" Class="GetPrefixesInRD" %> 

using System; 
using System.Web; 
using BCR.BLL; 

public class GetPrefixesInRD : IHttpHandler, System.Web.SessionState.IReadOnlySessionState 
{ 
    private readonly PrefixNewBLL prefixeBLL = new PrefixNewBLL(); 
    private readonly Newtonsoft.Json.JsonSerializer serializer = new Newtonsoft.Json.JsonSerializer(); 

    public void ProcessRequest(HttpContext context) 
    { 
     var prefixes = prefixeBLL.GetPrefixesByExistPrefixInAccountingDocs(null, 1, false); 
     prefixes.Sort((x, y) => String.CompareOrdinal(x.Prefix, y.Prefix)); 

     context.Response.ContentType = "application/json"; 
     context.Response.Clear(); 
     context.Response.BufferOutput = true; 
     serializer.Serialize(context.Response.Output, new { root = prefixes, total = prefixes.Count }); 
     context.Response.Flush(); 
     context.Response.End(); 
    } 

    public bool IsReusable { get { return false; } } 
} 
+1

서버 코드가 느려지면 서버 코드에 문제가있는 것입니다. 해당 코드를 표시하면 더 나은 대답을 얻을 수 있습니다. 귀하의 데이터베이스가 뭔가에 대한 잠금 것 같아요. 데이터 액세스 중에 발생하는 예외는 모두 기록합니까? – nunespascal

+0

답변 주셔서 감사합니다. 예외는 없지만 서버 코드에서 예외가 없습니다. 방금 체크했습니다. 또한 더 나은 도움을 위해 내 서버 코드로 내 게시물을 편집했습니다. –

+0

서버가 응답하는 대상은 무엇입니까? 네트워크 탭의 개발자 도구에서 Chrome을 사용하여 JSON 데이터를 살펴보고 요청을 확인할 수 있습니다. Ext가 사용자에게 오류를 주었을 때 또는 클라이언트의 어딘가에 문제가있는 경우 서버 응답이 잘못되었는지를 판단하는 데 최소한 도움이됩니다. – oldwizard

답변

0

디버깅, 나는 여전히하려고하고 있는지 확인하기 위해 this.isLoading()을 체크 할 때 이상한 사람에게 짐을 내라. 모든 것을 datachanged 이벤트로 옮기는 것이 더 나을지도 모릅니다. 상점을 분석해야하는 경우 console.dir (Ext.apply ({}, this));을 사용하십시오. 런타임시 스냅 샷을 얻으십시오.

관련 문제