リクエストの最大長を超えています。


1050

サイトに動画をアップロードしようとすると、「リクエストの最大長を超えました」というエラーが表示れます。

どうすれば修正できますか?

回答:


1973

アプリケーションのホスティングに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に相当します。)


7
sachinに感謝し、<httpRuntime maxRequestLength = "32768" executionTimeout = "180" />のようなものを追加しました
Surya sasidhar

11
maxAllowedContentLengthはキロバイトではなくバイト単位である必要があるため、提供されている例は同等ではありません。
マシューシャープ、

33
IIS 7.5とVS RC 2012 IIS Expressの両方で、これらの両方を設定する必要がありました。requestLimitsは、IISの最大長さ、構成している間のhttpRuntime 1は、ASP.NETの最大長を設定しstackoverflow.com/questions/6327452/...forums.iis.net/t/1169846.aspxを
Despertar

18
繰り返しますが、maxAllowedContentLengthはキロバイト単位ではなくバイト単位であることに注意してください。2つの値は同じ測定単位ではないため、同じ数であってはなりません。
Pandincus

13
この設定をフォルダーWeb.config内の設定ではなくメインに追加していることを確認してViewsください
Serj Sagan

553

ここでは言及されていないと思いますが、これを機能させるために、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があります。

当たり前のことですが、見落としがちです。


5
それが関係する可能性のある人へ:この回答はIIS-Express(asp.net-
webpages

5
はい、これはSachinの答えの代わりに私のために働いた答えです。Azureでも動作します。
Gautam Jain 2013年

5
これは間違いなく正しい答えです...両方のエントリが存在する必要があります。MVC 3の場合、プロジェクトのルートweb.configファイルにある可能性があります。
ミゲルアンジェロ

2
もう1つの重要なことは、カールが言及する「executionTimeout」です
Muhammad Amin

26
これを既存の行と組み合わせる必要がありました:<httpRuntime targetFramework = "4.5" maxRequestLength = "1048576" executionTimeout = "3600" />
Ken Mc

195

この変更を、サイト全体ではなく、アップロードに使用されると予想される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>

場所を考える素敵なソリューション。しかし、MVCを操作する(したがって、ルートを操作する)ときにロケーションパスはありますか?
Luuk Krijnen 2014

1
アップロードアクションを設定したルートに対応するURLになります。私の場合、フォームを投稿するUploadというアクションを持つDocumentsコントローラーがあります。あなたの場合、それはあなたの行動のURLが何であろうとするでしょう。
Nick Albrecht

この回答が好きな人は、こちらをご覧ください
DontVoteMeDown 2015年

2
おい、ロック。申し訳ありませんが、私のわずかな賛成票では不十分でした。
ニコラスピーターセン

1
これは、MVC v5までのWebAPIで動作します。MVC CoreでASP.NET Coreにアクセスすると、Kestrelに設定する必要のあるさまざまなオプションがあります。
Nick Albrecht

44

そして、誰かがこの例外を処理し、ユーザーに意味のある説明を表示する方法を探している場合に備えて(「大きすぎるファイルをアップロードしています」など):

//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以降が必要)


1
例外を生成するには、maxAllowedContentLengthを(maxRequestLength * 1024)より大きくする必要があります。
Der_Meister 2016年

この投稿は、ユーザーに警告するために必要なものを私に与えましたが、HttpContext.Current.ClearError()Response.Redirect()適切に機能するために必要でした。それに関してはweb.config、のmaxRequestLength属性だけで機能しますhttpRuntime
nrod

ファイルサイズの検証とユーザーフレンドリーなメッセージはonchange、アップロードボタンのイベントを使用してページレベルでJSを介して実行でき、アップロードファイルのサイズを最大アップロード制限と比較できます。
アルフレッドウォレス

29

デフォルトの最大リクエストサイズは、 4MB (4096 KB)

これはここで説明されています

上記の記事では、この問題の修正方法についても説明しています:)


4
リンクからマイクロソフトサポートホームページにリダイレクトされます
Bishop

1
多分何かがおかしい。リンクはここに
gofr1

22

構成ファイルを更新できないが、ファイルのアップロードを処理するコードを制御する場合は、を使用しますHttpContext.Current.Request.GetBufferlessInputStream(true)

パラメータのtruedisableMaxRequestLengthは、構成されたリクエスト制限を無視するようにフレームワークに指示します。

詳細については、https://msdn.microsoft.com/en-us/library/hh195568(v = vs.110).aspxにアクセスしてください


素晴らしいです。では、トップの回答はどのようにして1600票を超え、これはわずか5票でしょうか。多くの場合、これは私たちがこれを実行したい単一のアクションにすぎないため、これは素晴らしいことです。さらに、他の設定などをいじる必要はありません
ニコラスピーターセン

これは私が探していたものです。
Chris Catignani

20

アップロードされたファイルの最大サイズを設定する要素がweb.configにあります:

<httpRuntime 
    maxRequestLength="1048576"
  />

11

すべての回答を1か所にまとめます。

<system.web>
  <httpRuntime targetFramework="4.5.2" maxRequestLength="1048576"/>
</system.web>

<system.webServer>
  <security>
    <requestFiltering>
      <requestLimits maxAllowedContentLength="1073741824" />
    </requestFiltering>
  </security>
</system.webServer>

ルール:

  • maxRequestLength(kbで表現)の値は、maxAllowedContentLength(バイトで表現)と一致する必要があります。
  • ほとんどの場合、system.webセクションにはすでに「httpRuntime」が含まれている可能性があります。targetFrameworkを使用する.netのバージョンに設定します。

ノート:

  • maxRequestLengthのデフォルト値は4096(4mb)です。最大値は2,147,483,647です
  • maxAllowedContentLengthのデフォルト値は30,000,000(約30MB)です。最大値は4,294,967,295です

詳細情報MSDN


8

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>

6

何日も悩みました。Web.configファイルを変更しましたが、機能しませんでした。私のプロジェクトには2つのWeb.configファイルがあり、他のファイルではなくROOTディレクトリの1つを変更する必要があることがわかりました。これがお役に立てば幸いです。


5

サイトのアプリケーションへのリクエストがある場合は、ルートのweb.configでmaxRequestLengthを設定してください。アプリケーションのweb.configのmaxRequestLengthが無視されているようです。


もし私がこれを複数回賛成できれば私はそうします。これは私の人生の一日を無駄にしました。仮想dirサブアプリケーションがある場合は、サブアプリケーションレベルではなく、ルートレベルでhttpRuntime maxRequestLength="###およびrequestLimits maxAllowedContentLengthをWeb構成に配置する必要があります。
ニックバン2017

1

私のweb.configファイルに複数のsystem.webセクションがあるという事実に失敗しました。構成レベルのsystem.webセクションに<httpRuntime maxRequestLength = "1048576" />を追加したときに機能しました。


1

私はC:\Windows\System32\inetsrv\config\applicationHost.configファイルを編集<requestLimits maxAllowedContentLength="1073741824" />して最後に追加する必要がありました...

<configuration>
    <system.webServer>
        <security>
            <requestFiltering>

セクション。

このマイクロソフトサポート記事に従って


独自のプロジェクトのweb.configはこれらをオーバーライドする必要があるため、変更する必要はありませんapplicationHost.config
bvgheluwe

-3

コンパイルされていない構成Webに追加できます

<system.web> 
  <httpRuntime maxRequestLength="1024" executionTimeout="3600" /> 
  <compilation debug="true"/> 
</system.web> 
<security> 
  <requestFiltering> 
    <requestLimits maxAllowedContentLength="1048576"/> 
  </requestFiltering> 
</security>

1
このexecutionTimeout属性は、要求された内容とは何の関係もありませんcompilation。また、タグも関係ありません。
Mathias Lykkegaard Lorenzen
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.