10GbファイルをIISにワンピースでアップロードする必要があります。私が知る限り、IIS 7.x/ASP.NET 4.0は2Gbを超えるアップロードをサポートしていません(4Gbと言う人もいます)。2Gbを超えるファイルをIIS 8/ASP.NET 4.5にアップロードしますか?
IIS 8/ASP.NET 4.5で修正されていますか?
10GbファイルをIISにワンピースでアップロードする必要があります。私が知る限り、IIS 7.x/ASP.NET 4.0は2Gbを超えるアップロードをサポートしていません(4Gbと言う人もいます)。2Gbを超えるファイルをIIS 8/ASP.NET 4.5にアップロードしますか?
IIS 8/ASP.NET 4.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つの質問しかありません: "どう?"
上記の 'requestLimits'要素は、効果的にIISを4GBに制限します。私たち(ASP.NET)は、 'maxRequestLength'を32ビット整数ではなく64ビット整数に制限するパッチを試作して検証しましたが、ハードコードされたIISの上限により、パッチをチェックしなかったため、いずれにしても非常に便利でした。呼び出されたGetBufferlessInputStreamオーバーロードは、ASP.NETに 'maxRequestLength'制限を無視させる唯一の方法です。私たちはIISチームと議論して、将来のバージョンでハードコードされたキャップを持ち上げようとしています。 – Levi
@Leviキャップを持ち上げる必要はありません。ただそれを削除します。この2Gb/4Gbの制限により、私たちのプロジェクトではIIS/ASP.NETが使用できなくなります。私たちの顧客は、Webブラウザ経由で10Gbファイルをアップロードする必要があります(可能です)。 –
Mb owin selfhosted環境でも可能ですか? – smedasn
アップロード方法'input type ="ファイル "'? – vcsjones
PUT動詞を使用します。 'input type = "file"'のPOSTマルチパートアップロードを使用してもOKですが、Chromeは2Gbを超えるアップロードをサポートしています。 –