Makale numarası: 925764 - Son Gözden Geçirme: 11 Mayıs 2007 Cuma - Gözden geçirme: 1.3

IIS 6.0 çalışan bir Web sunucusuna bir Web tarayıcısı bir etkin sunucu sayfası isteği gönderdiğinde hata iletisi: "yanıt arabelleği sınırı aşıldı"

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.

Bu Sayfada

Hepsini aç | Hepsini kapa

Belirtiler

Şu senaryoyu inceleyin. Istemci Web tarayıcısı, ınternet ınformation Services (IIS) 6.0 çalıştıran bir Web sunucusuna bir active server sayfası (ASP) isteği gönderir. ASP isteği, büyük bir yanıt oluşturur. Bu senaryoda, aşağıdaki belirtilerden oluşabilir:
  • Yanıt başarısız olur.
  • Bir HTTP 500 sunucu hatası oluşuyor ve istemci Web tarayıcısında aşağıdaki hata iletisini alırsınız:
    Yanıt nesnesi hata 'ASP 0251: 80004005'
    Yanıt arabelleği sınırı aşıldı
    / PageName.asp, <a1>Satır</a1> LineNumber
    NotPageName.asp istenen ASP sayfasının adını temsil eder. LineNumber yanıt arabelleği sınırı aştı önce işlendiği dosyayı son satır numarasını gösterir.
  • IIS günlük dosyası, cs-uri-sorgu alanı şu hatayı içeriyor:
    |0|ASP_0251_:_80004005|Response_Buffer_Limit_Exceeded

Neden

Bu sorun, IIS 6. 0'ile kullanılmaya başlanan ve IIS 5.0 için eklenmiş bir davranış değişikliği nedeniyle oluşur. ııS'NIN bu sürümleri, varsayılan ASP yanıt arabelleği sınırı 4 MB zorlar. Bu sınır, Web uygulamasını barındıran IIS işlemini'olumsuz etkilemesini geniş ASP yanıtları engeller. Bir ASP isteğinin yapılandırılmış arabellek sınırından daha büyük bir yanıt oluşturursa, "Belirtiler" bölümünde anlatılan belirtilerle karşılaşırsınız.

Çözüm

Çoğu senaryoda, arabellek 4 MB sınırı, ASP Web istemcilere gönderilen yanıtları için yeterli olur. Bu sınır, yeterli değilse, aşağıdaki yöntemlerden birini kullanın:

Yöntem 1: yanıt boyutunu azaltın.

Yanıtta 4 MB varsayılan değerinden daha büyükse, bu boyut sık düşük kullanıcı deneyimi neden olur. Web tarayıcısı, ağ üzerinden büyük yanıtı alması gerekir. Sonra Web tarayıcısına ayrıştırması ve çok büyük bir HTML yanıt görüntülemek gerekir.

Yanıt aldığında Web istemcisi, yanıtın tamamını tek bir sayfa olarak görüntülemek yok, yanıt boyutunu azaltabilirsiniz. Örneğin, verileri bir kılavuzda görüntülenir, ASP tabanlı uygulama yeniden yazabilirsiniz. Bu nedenle, Web istemcisi bir defada bir veri sayfasına göz atabilirsiniz. Microsoft ASP.NET'te GridView sınıfı, bu etkiyi elde etmek için kullanabilirsiniz. ASP.NET'te GridView sınıfı hakkında daha fazla bilgi için aşağıdaki Microsoft Developer Network (MSDN) Web sitesini ziyaret edin:
http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.aspx (http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.aspx)

Yöntem 2: Response.Flush'tan yöntemi kullanın...

Büyük bir tablo oluşturmak için veri yapısı ASP dosyasına bir döngü kullanırsanız, Response.Flush'tan yöntemini kullanabilirsiniz. Bu yöntemi kullandığınızda, arabelleğe alma kullanmaya devam edebilirsiniz. Ancak, Web istemcisine gönderilen veri miktarını üzerinde tam denetime de vardır ve yanıtı arabellek boyutunu kontrol edebilirsiniz. Response.Flush'tan yöntemi hakkında daha fazla bilgi için aşağıdaki MSDN Web sitesini ziyaret edin:
http://msdn2.microsoft.com/en-us/library/ms525560.aspx (http://msdn2.microsoft.com/en-us/library/ms525560.aspx)

Yöntem 3: ara belleğe alma devre dışı bırak.

Web sunucusunda, uygulama düzeyinde veya sayfa düzeyinde ara belleğe alma devre dışı bırakabilirsiniz. Ara belleğe alma devre dışı bıraktığınızda, Web sunucusu HTTP yığını-Web istemcisine yanıt göndermek için Aktarım kodlamasını kullanır.

Uygulama düzeyinde ara belleğe alma devre dışı bırakmak için <a0>AspBufferingOn</a0> IIS metatabanı özelliğini kullanabilirsiniz. AspBufferingOn IIS metabase özelli?i hakk?nda daha fazla bilgi için aşağıdaki Microsoft Web sitesini ziyaret edin:
http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/fbe1bd5f-52d4-4a26-8ab1-7bb897bb3d53.mspx (http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/fbe1bd5f-52d4-4a26-8ab1-7bb897bb3d53.mspx)
Sayfa düzeyinde ara belleğe alma devre dışı bırakmak için <a0></a0>, Response.Buffer</a1> özelliğini kullanabilirsiniz. Response.Buffer özelli?i hakk?nda daha fazla bilgi için aşağıdaki MSDN Web sitesini ziyaret edin:
http://msdn2.microsoft.com/en-us/library/ms526001.aspx (http://msdn2.microsoft.com/en-us/library/ms526001.aspx)

Yöntem 4: arabellek sınırını artırın.

Aşağıdaki koşullardan biri doğru olduğunda arabelleğe alma sınırını artırabilirsiniz:
  • Istemci, bir Web tarayıcısı değil.
  • GridView sınıfı gibi bir disk belleği teknolojisinin avantajlarından yararlanmak için uygulamayı yeniden tasarlamanız edemiyor.
Arabellek sınırı artırırsanız gerekir, en büyük boyutunu bilinen yanıt veren bir arabellek sınırı seçin. En büyük yanıt boyutu önceden bilmiyorsanız, sınama sırasında arabellek sınırı için büyük bir değere artırabilir. Sınamayı tamamladıktan sonra IIS günlük dosyası için bir sayfa için oluşturulan yanıt <a1>sc-bytes</a1> alanında bulunan en büyük değeri kullanır.

Arabelleğe alma sınırını artırmak için <a0></a0>, aşağıdaki adımları izleyin:
  1. Başlat ' ı tıklatın, Çalıştır ' ı tıklatın, cmd yazın ve Tamam ' ı tıklatın.
  2. Aşağıdaki komutu yazın ve ENTER tuşuna basın:
    CD /d %systemdrive%\inetpub\adminscripts
  3. Aşağıdaki komutu yazın ve ENTER tuşuna basın:
    cscript.exe adsutil.vbs SET w3svc/aspbufferinglimit LimitSize
    NotLimitSize arabellek sınırı boyutunu bayt cinsinden gösterir. Örneğin, 67108864 numarası arabellek boyutu sınırı 64 MB olarak ayarlar.
Arabellek sınırı doğru ayarlandığını doğrulamak için şu adımları izleyin:
  1. Başlat ' ı tıklatın, Çalıştır ' ı tıklatın, cmd yazın ve Tamam ' ı tıklatın.
  2. Aşağıdaki komutu yazın ve ENTER tuşuna basın:
    CD /d %systemdrive%\inetpub\adminscripts
  3. Aşağıdaki komutu yazın ve ENTER tuşuna basın:
    cscript.exe adsutil.vbs GET w3svc/aspbufferinglimit

Durum

Bu davranış tasarım yüzündendir.

Daha fazla bilgi

AspBufferingLimit IIS metabase özelli?i hakk?nda daha fazla bilgi için aşağıdaki Microsoft Web sitesini ziyaret edin:
http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/ea7e9c3f-d0c8-4e5c-8965-0d0429a3b8f1.mspx (http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/ea7e9c3f-d0c8-4e5c-8965-0d0429a3b8f1.mspx)

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Internet Information Services 6.0
Anahtar Kelimeler: 
kbmt kbasp kbtshoot kbprb KB925764 KbMttr
Otomatik TercümeOtomatik Tercüme
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:925764  (http://support.microsoft.com/kb/925764/en-us/ )