2012-01-24 68 views
6

10GbファイルをIISにワンピースでアップロードする必要があります。私が知る限り、IIS 7.x/ASP.NET 4.0は2Gbを超えるアップロードをサポートしていません(4Gbと言う人もいます)。2Gbを超えるファイルをIIS 8/ASP.NET 4.5にアップロードしますか?

IIS 8/ASP.NET 4.5で修正されていますか?

+0

アップロード方法'input type ="ファイル "'? – vcsjones

+0

PUT動詞を使用します。 'input type = "file"'のPOSTマルチパートアップロードを使用してもOKですが、Chromeは2Gbを超えるアップロードをサポートしています。 –

答えて

5

ここで私は4GB未満にアップロードしています(この限界をどのように打ち破るのだろうか)。 アプリケーションプールは.NET 4.0クラシックモードです(なぜ4.5はないのですか?)。 web.configファイル:

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

この記事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; 
    } 
} 

によると、ログには、.NET 4.5からメソッドが例外なしで呼び出されると述べています。 しかし、このリンクhttp://aspnet.uservoice.com/forums/41199-general-asp-net/suggestions/2642879-maximum-upload-size-in-asp-net-is-2gb-increase-itはこう言っています: "完了。この制限は4.5で増えています。"

だから私には1つの質問しかありません: "どう?"

+2

上記の 'requestLimits'要素は、効果的にIISを4GBに制限します。私たち(ASP.NET)は、 'maxRequestLength'を32ビット整数ではなく64ビット整数に制限するパッチを試作して検証しましたが、ハードコードされたIISの上限により、パッチをチェックしなかったため、いずれにしても非常に便利でした。呼び出されたGetBufferlessInputStreamオーバーロードは、ASP.NETに 'maxRequestLength'制限を無視させる唯一の方法です。私たちはIISチームと議論して、将来のバージョンでハードコードされたキャップを持ち上げようとしています。 – Levi

+0

@Leviキャップを持ち上げる必要はありません。ただそれを削除します。この2Gb/4Gbの制限により、私たちのプロジェクトではIIS/ASP.NETが使用できなくなります。私たちの顧客は、Webブラウザ経由で10Gbファイルをアップロードする必要があります(可能です)。 –

+0

Mb owin selfhosted環境でも可能ですか? – smedasn

関連する問題