SORU
25 HAZİRAN 2009, PERŞEMBE


ASP.NET MVC için büyük dosya yüklenenler izle

Üzerinde çalıştığım bir uygulama için, Kullanıcı çok büyük dosyaları yüklemek için izin istiyorum--yani, birçok gigabayt web sitemiz üzerinden potansiyel olarak. Ne yazık ki, ASP.NET MVC bu hizmet için kesinlikle ideal bir uygulama için başlamadan önce RAM içine tüm isteği yük gibi görünüyor. Özellikle, aşağıdaki gibi bir kod ile bu sorunu atlatmaya çalışıyoruz:

if (request.Method == "POST")
{
    request.ContentLength = clientRequest.InputStream.Length;
    var rgbBody = new byte[32768];

    using (var requestStream = request.GetRequestStream())
    {
        int cbRead;
        while ((cbRead = clientRequest.InputStream.Read(rgbBody, 0, rgbBody.Length)) > 0)
        {
            fileStream.Write(rgbBody, 0, cbRead);
        }
    }
}

tampon--istek--RAM zihniyet. atlatmak için başarısız. Kolay bir şekilde bu davranışa geçici bir çözüm var mı?

CEVAP
10 AĞUSTOS 2009, PAZARTESİ


Benim ilk kod temelde doğru olduğu ortaya çıktı; tek değişiklik gerekli değişikliği oldu

request.ContentLength = clientRequest.InputStream.Length;

için

request.ContentLength = clientRequest.ContentLength;

Eski içerik uzunluğunu belirlemek için tüm istek dere; ikincisi başlıklarını tam olarak gönderilen sadece gerektirir sadece Content-Length Başlığı denetler. Bu IIS tamamen özgün sorunu ortadan kaldırır isteği hemen, streaming başlamak için izin verir.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • guau . .

    guau . .

    25 Ocak 2008
  • knopik96

    knopik96

    7 Mayıs 2011
  • TheOtherMau5

    TheOtherMau5

    6 Mart 2012