2
我有一個奇怪的問題,這並不總是,但有時候會出現相同的請求。 在我的網站(localhost)我有一個ExtJS商店自動加載,並且在頁面加載(按F5按鈕)後,它從服務器上的一些處理程序(* .ashx)中讀取JSON。處理程序從數據庫獲取數據並將其序列化爲JSON。它工作4次5按F5。第5次json-reader顯示成功= false和0長度數據。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; } }
}
如果減慢服務器代碼有助於解決問題,那麼問題出在您的服務器代碼上。顯示該代碼將爲您提供更好的答案。我懷疑你的數據庫會鎖定某些東西。你寫出數據訪問期間發生的任何異常嗎? – nunespascal 2013-04-09 11:07:43
感謝您的回答,但我的服務器代碼中沒有例外,我剛剛檢查過它。此外,我編輯我的帖子與我的服務器代碼更好的幫助 – 2013-04-09 11:36:40
什麼是服務器響應?您可以在Network選項卡的Developer Tools中查看Chrome瀏覽器中的JSON數據,並檢查請求。這至少可以幫助您確定當Ext給您錯誤時服務器響應錯誤,或者您的客戶端存在問題時。 – oldwizard 2013-04-19 07:39:32