2012-01-24 16 views
6

Tek parça halinde IIS'ye 10 Gb dosyaları yüklemem gerekiyor. Bildiğim kadarıyla, IIS 7.x/ASP.NET 4.0, 2Gb üzerindeki yüklemeleri desteklemiyor (bazı insanlar 4Gb diyor).Dosyaları 2Gb'den fazla IIS 8/ASP.NET 4.5'e yükleyin?

IIS 8/ASP.NET 4.5'de giderilmiştir?

+0

Nasıl yükle? 'Input type = "file" 'ile? – vcsjones

+0

PUT fiilini kullanma. POST çoktan yüklemesini 'input type = "file"' ile kullanmak da Tamam, Chrome 2Gb'nin üzerine yükleme yapmayı destekliyor. –

cevap

5

4 GB'nin altına nasıl yüklediğim aşağıda açıklanmıştır (Bu sınırı nasıl aşacağımı merak ediyorum): Uygulama havuzu .NET 4.0 Classic modudur (Neden 4.5?). web.config:

<httpRuntime executionTimeout="2400" maxRequestLength="2099999999" /> 
... 
<requestLimits maxAllowedContentLength="4294967290"/> 

bu makalede http://msdn.microsoft.com/en-us/library/hh195435%28v=vs.110%29.aspx

public override Stream InputStream 
{ 
    get 
    { 
     object workerRequest = ((IServiceProvider)HttpContext.Current).GetService(typeof(HttpWorkerRequest)); 
     bool webDevServer = workerRequest != null && 
          workerRequest.GetType().FullName == "Microsoft.VisualStudio.WebHost.Request"; 

     if (request.GetType().Assembly.GetName().Version.Major >= 4 && !webDevServer) 
     { 
      try // trying to set disableMaxRequestLength true for .NET 4.5 
      { 
       return (Stream)typeof(HttpRequest).GetMethod("GetBufferlessInputStream", BindingFlags.Public | BindingFlags.Instance, null, new[] { typeof(bool) }, null) 
             .Invoke(request, new object[] { true }); 
      } 
      catch (NullReferenceException) 
      { // .NET 4.0 is not patched by adding method overload 
       Log(DateTime.Now + ": Can not invoke .NET 4.5 method"); 
      } 
      return (Stream) typeof (HttpRequest).GetMethod("GetBufferlessInputStream", 
                  BindingFlags.Public | BindingFlags.Instance, 
                  null, new Type[0], null) 
               .Invoke(request, new object[0]); 
     } 
     return request.InputStream; 
    } 
} 

Giriş göre .NET 4.5 den yöntem istisnasız denir söylüyor. Ancak bu bağlantı http://aspnet.uservoice.com/forums/41199-general-asp-net/suggestions/2642879-maximum-upload-size-in-asp-net-is-2gb-increase-it diyor ki: "Tamamlandı. Bu sınır 4,5'te artırılıyor."

Sadece bir sorum var: "NASIL?"

+2

Yukarıda bahsettiğiniz 'requestLimits' öğesi, IIS'yi 4 GB'de etkin bir şekilde kaplar. Biz (ASP.NET) 'maxRequestLength' sınırını 32-bit bir tamsayı yerine 64-bitlik bir tamsayı haline getirecek bir yama prototip ve doğruladı, ancak kod yanlış bir IIS kapsayıcısından dolayı, yamamızı hiçbir zaman kontrol etmedik. zaten çok yararlı oldu. Çağırdığınız GetBufferlessInputStream aşırı yüklemesi, 'maxRequestLength' sınırını göz ardı etmek için ASP.NET'i almanın tek yoludur. Gelecekteki bir sürümde kaldırılan sabit kodlu kapağı almayı denemek için IIS ekibi ile görüşmeler yapıyoruz. – Levi

+0

@Levi Kapağı kaldırmaya gerek yoktur. Sadece kaldır onu. Bu 2Gb/4Gb sınırlaması, IIS/ASP.NET'i projelerimizde kullanılamaz hale getiriyor. Müşterilerimizin 10Gb dosyalarını web tarayıcısı üzerinden yüklemeleri gerekiyor (evet, bu mümkün). –

+0

Mb owin kendinden kaynaklı bir ortamda mümkün mü? – smedasn