サイトに動画をアップロードしようとすると、「リクエストの最大長を超えました」というエラーが表示されます。
どうすれば修正できますか?
サイトに動画をアップロードしようとすると、「リクエストの最大長を超えました」というエラーが表示されます。
どうすれば修正できますか?
回答:
アプリケーションのホスティングにIISを使用している場合、デフォルトのアップロードファイルサイズは4MBです。それを増やすには、以下のセクションを使用してくださいweb.config
-
<configuration>
<system.web>
<httpRuntime maxRequestLength="1048576" />
</system.web>
</configuration>
IIS7以降では、以下の行も追加する必要があります。
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1073741824" />
</requestFiltering>
</security>
</system.webServer>
注:
maxRequestLength
キロバイトで測定されますmaxAllowedContentLength
バイト単位で測定されます これが、この構成例で値が異なる理由です。(どちらも1 GBに相当します。)
Web.config
内の設定ではなくメインに追加していることを確認してViews
ください
ここでは言及されていないと思いますが、これを機能させるために、web.configでこれらの値の両方を指定する必要がありました。
に system.web
<httpRuntime maxRequestLength="1048576" executionTimeout="3600" />
そして system.webServer
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1073741824" />
</requestFiltering>
</security>
重要:これらの値は両方とも一致する必要があります。この場合、私の最大アップロードは1024メガバイトです。
maxRequestLengthには1048576 KILOBYTESがあり、maxAllowedContentLengthには1073741824 BYTESがあります。
当たり前のことですが、見落としがちです。
web.config
ファイルにある可能性があります。
この変更を、サイト全体ではなく、アップロードに使用されると予想されるURLに制限することをお勧めします。
<location path="Documents/Upload">
<system.web>
<!-- 50MB in kilobytes, default is 4096 or 4MB-->
<httpRuntime maxRequestLength="51200" />
</system.web>
<system.webServer>
<security>
<requestFiltering>
<!-- 50MB in bytes, default is 30000000 or approx. 28.6102 Mb-->
<requestLimits maxAllowedContentLength="52428800" />
</requestFiltering>
</security>
</system.webServer>
</location>
そして、誰かがこの例外を処理し、ユーザーに意味のある説明を表示する方法を探している場合に備えて(「大きすぎるファイルをアップロードしています」など):
//Global.asax
private void Application_Error(object sender, EventArgs e)
{
var ex = Server.GetLastError();
var httpException = ex as HttpException ?? ex.InnerException as HttpException;
if(httpException == null) return;
if (((System.Web.HttpException)httpException.InnerException).WebEventCode == System.Web.Management.WebEventCodes.RuntimeErrorPostTooLarge)
{
//handle the error
Response.Write("Too big a file, dude"); //for example
}
}
(ASP.NET 4以降が必要)
HttpContext.Current.ClearError()
がResponse.Redirect()
適切に機能するために必要でした。それに関してはweb.config
、のmaxRequestLength
属性だけで機能しますhttpRuntime
。
onchange
、アップロードボタンのイベントを使用してページレベルでJSを介して実行でき、アップロードファイルのサイズを最大アップロード制限と比較できます。
構成ファイルを更新できないが、ファイルのアップロードを処理するコードを制御する場合は、を使用しますHttpContext.Current.Request.GetBufferlessInputStream(true)
。
パラメータのtrue
値disableMaxRequestLength
は、構成されたリクエスト制限を無視するようにフレームワークに指示します。
詳細については、https://msdn.microsoft.com/en-us/library/hh195568(v = vs.110).aspxにアクセスしてください
すべての回答を1か所にまとめます。
<system.web>
<httpRuntime targetFramework="4.5.2" maxRequestLength="1048576"/>
</system.web>
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1073741824" />
</requestFiltering>
</security>
</system.webServer>
ルール:
ノート:
詳細情報MSDN
maxRequestLength(KBでの長さ)ここでは例として。私は1024(1MB)を取ったmaxAllowedContentLength(バイト単位の長さ)はmaxRequestLength(1048576バイト= 1MB)と同じである必要があります。
<system.web>
<httpRuntime maxRequestLength="1024" executionTimeout="3600" />
</system.web>
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1048576"/>
</requestFiltering>
</security>
</system.webServer>
サイトのアプリケーションへのリクエストがある場合は、ルートのweb.configでmaxRequestLengthを設定してください。アプリケーションのweb.configのmaxRequestLengthが無視されているようです。
httpRuntime maxRequestLength="###
およびrequestLimits maxAllowedContentLength
をWeb構成に配置する必要があります。
私はC:\Windows\System32\inetsrv\config\applicationHost.config
ファイルを編集<requestLimits maxAllowedContentLength="1073741824" />
して最後に追加する必要がありました...
<configuration>
<system.webServer>
<security>
<requestFiltering>
セクション。
このマイクロソフトサポート記事に従って
applicationHost.config
。
コンパイルされていない構成Webに追加できます
<system.web>
<httpRuntime maxRequestLength="1024" executionTimeout="3600" />
<compilation debug="true"/>
</system.web>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1048576"/>
</requestFiltering>
</security>
executionTimeout
属性は、要求された内容とは何の関係もありませんcompilation
。また、タグも関係ありません。