SORU
13 Aralık 2010, PAZARTESİ


Neden aynı ASP.NET MVC eylem için aynı anda birden fazla AJAX çağrıları tarayıcı engellemeye neden olur?

Birkaç gün önce bu soruyu sordum:

Why does $.getJSON() block the browser?

Ben aynı denetleyici eylem altı jQuery uyumsuz ajax istekleri hemen hemen hepsi aynı anda ateş. Her istek 10 saniye geri alır.

Ve eylem yöntemine istekleri hata ayıklama günlüğü aracılığıyla isteklerini serialised ve asla paralel olduğunu fark ettim. yani benim log4net günlükleri bir zaman çizelgesi gibi görmek bu

2010-12-13 13:25:06,633 [11164] INFO   - Got:1156
2010-12-13 13:25:16,634 [11164] INFO   - Returning:1156
2010-12-13 13:25:16,770 [7124] INFO   - Got:1426
2010-12-13 13:25:26,772 [7124] INFO   - Returning:1426
2010-12-13 13:25:26,925 [11164] INFO   - Got:1912
2010-12-13 13:25:36,926 [11164] INFO   - Returning:1912
2010-12-13 13:25:37,096 [9812] INFO   - Got:1913
2010-12-13 13:25:47,098 [9812] INFO   - Returning:1913
2010-12-13 13:25:47,283 [7124] INFO   - Got:2002
2010-12-13 13:25:57,285 [7124] INFO   - Returning:2002
2010-12-13 13:25:57,424 [11164] INFO   - Got:1308
2010-12-13 13:26:07,425 [11164] INFO   - Returning:1308

Görüyorum FireFox Ağ zaman çizelgesine bakarak:

alt text

Günlük örnek yukarıda ve Firefox Ağ zaman çizelgesi her iki istekleri aynı şekilde.

Aynı sayfada aynı eylem istekleri serialised?Aynı oturumda Session nesneye serialised erişim farkındayım, ama hiçbir oturum veri dokunuyor.

İstemci tarafı kodu tek bir istek için soydum (en uzun koşu) ama bu hala tarayıcı engeller, yani ajax isteği tamamlandıktan tek tarayıcı herhangi bir bağlantıyı tıklatarak karşılık geliyor.

Ben de ben de inceleyin burada (Chrome Geliştirici Araçları) üzerine tıklayarak bir bağlantı zaman uzun süren bir ajax isteği yürüterek, raporlar Failed to load resource hata hemen anlaşılacağı tarayıcı vardır öldürmüş ya da öldürmeye teşebbüs ve bekliyor?) ajax isteği:

alt text

Ancak tarayıcı hala yeni sayfaya yönlendirmek için bir yaş alır.

Ajax istekleri gerçekten uyumsuz veya javascript aslında tek dişli olduğu için bu el çabukluğu.

Benim istekleri sadece bu iş için çok zaman mı alıyor?

Sorun Firefox ve IE de oluşur.

Ben de senaryoyu $.ajax doğrudan kullanım ve açıkça async: true ayarlamak için değiştirildi.

IIS7 bu işi ben yönetiyorum.5, 7 lezzetleri aynı şeyi Windows 2008R2 ve Windows.

Debug ve release de aynı şekilde davranır oluşturur.

CEVAP
14 Aralık 2010, Salı


Cevap yüzüme bakıyordu.

ASP.NET Session State Overview:

Oturum durumu ASP.NET erişim eğer iki farklı kullanıcı eşzamanlı istekleri yaparsanız, her biri ayrı bir oturum için izin verilen eşzamanlı demektir seans başına özeldir. Ancakeğer iki eşzamanlı istekleri aynı oturum için yapılan (aynı Sessionıd değeri kullanarak), ilk isteği oturum bilgilerini özel erişim alır. İkinci isteği ilk istek tamamlandıktan sonra yürütür.

Bu olaydan bir kaç hafta önce paragraf gerçekten cesur cümleleri tam etkisini alarak yağsız ederim. Basit olarak okumuştu< . em ^"oturum durumu için erişim serialised"değil< . em ^"tüm istekleri, oturum durumu touch ya, serialised olup olmadığını olursa olsun"istekleri aynı oturumda geldi.

Neyse ki geçici bir çözüm ASP.NET MVC3 ve olası oturum-az denetleyicileri oluşturmak için vardır. Scott bu burada bahsediyor Guthrie:

Announcing ASP.NET MVC 3 (Release Candidate 2)

MVC3 RC2 kurdum ve proje yükseltti. [SessionState(SessionStateBehavior.Disabled)] ile söz konusu kontrol dekorasyon sorunu çözer.

Ve tabii ki, genellikle sadece Taşma birkaç dakika önce Yığını bulduk:

Asynchronous Controller is blocking requests in ASP.NET MVC through jQuery

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jonathan D.

    Jonathan D.

    3 Kasım 2006
  • Photoshop Training Channel

    Photoshop Tr

    13 Temmuz 2012
  • RFS Dan

    RFS Dan

    22 Temmuz 2014