ASP.NETで最大アップロードファイルサイズを増やす方法


237

ASP.NETでのファイルのアップロードを除くフォームがあります。最大アップロードサイズをデフォルトの4 MBより大きくする必要があります。

msdnで以下のコードを参照している特定の場所を見つけました。

[ConfigurationPropertyAttribute("maxRequestLength", DefaultValue = )]

参考文献は実際にそれを使用する方法を説明していません、そして私はいくつかのことを試みましたが成功しませんでした。ファイルのアップロードを要求している特定のページについてのみ、この属性を変更したい。

これは正しいルートですか?そして、これをどのように使用しますか?


それはコードの制限であり、ホストの制限ではないのですか?IISにも制限があります。
MrChrister 2008年

私はそれが.Netの制限だと確信していました。以下の答えがうまくいきました。
エディ

回答:


406

この設定は、web.configファイルで行います。ただし、アプリケーション全体に影響します...ページごとに設定できるとは思いません。

<configuration>
  <system.web>
    <httpRuntime maxRequestLength="xxx" />
  </system.web>
</configuration>

「xxx」はKBです。デフォルトは4096(= 4 MB)です。


6
これにより、サイト全体で仕事ができるようになりました。ここでは、10240(または10 MB)に設定しました。ありがとう!
エディ

12
IIS7 +を実行していて、これが機能しない場合は、私の回答を参照してください。
4imble 2013

これを1つのコントローラーに制限することは可能ですか?
ギジェルモ

@Eddie 2つのweb.configファイルがありますが、両方で使用しましたが、機能しません。どうすればできますか?
Ahmad

2
これは特定のパスでも実行できます。<location path = "Api / Controller"> <system.web> <authorization> <allow users = "*" /> </ authorization> <httpRuntime maxRequestLength = "102400" /> </system.web> </ location> (認証タグは不要)
nios

181

IIS 7以降の場合は、httpRuntime maxRequestLength設定を追加するだけでなく、以下も追加する必要があります。

  <system.webServer>
    <security>
      <requestFiltering>
        <requestLimits maxAllowedContentLength="52428800" /> <!--50MB-->
      </requestFiltering>
    </security>
  </system.webServer>

またはIIS(7)の場合:

  • 大きなファイルのアップロードを受け入れることができるようにするWebサイトを選択します。
  • メインウィンドウで[リクエストフィルタリング]をダブルクリックします。
  • 「機能設定の編集」を選択します
  • 「最大許容コンテンツ長(バイト)」を変更します

私はキロバイトを忘れました:p
Andrew Myhre 2014年

10
あなたは、おそらく設定する必要があります両方を maxRequestLengthし、maxAllowedContentLength仕事にそれを得るために...見るstackoverflow.com/questions/6327452/...
MikeM

7
@AndrewMyhre maxAllowedContentLengthは、KBではなくバイト単位です。Microsoftのドキュメントによると、デフォルトは30 MBです。
Dan Randolph

1
記載されているよう@DanRandolphは、実際のデフォルトは、30000000(約28.6メガバイト)であるiis.net/configreference/system.webserver/security/...
aaaantoine

必ず両方の設定が必要です。
mohrtan 2017

74

アップロードするファイルのサイズ制限を増やすには、2つの方法があります

1. IIS6以下

デフォルトでは、ASP.Netでは、サーバーにアップロードされるファイルの最大サイズは約4MBです。この値は、web.configのmaxRequestLength属性を変更することで増やすことができます 。

注意:maxRequestLenghtはKBです

:アップロードを15MBに制限する場合は、maxRequestLengthを「15360」(15 x 1024)に設定します。

<system.web>
   <!-- maxRequestLength for asp.net, in KB --> 
   <httpRuntime maxRequestLength="15360" ></httpRuntime> 
</system.web>

2. IIS7以降

ここでファイルをアップロードするために使用されるわずかに異なる方法.IIS7はリクエストフィルタリングモジュールを導入しました.ASP.Netの前に実行されます。パイプラインが機能する方法は、IIS値(maxAllowedContentLength)が最初にチェックされ、次にASP.NET値(maxRequestLength)がチェックされることを意味します。 maxAllowedContentLength属性のデフォルトは28.61 MBです。この値は、同じweb.configの両方の属性を変更することで増やすことができます。

覚えておいてください:maxAllowedContentLengthはバイト単位です

:アップロードを15MBに制限する場合は、maxRequestLengthを「15360」に、maxAllowedContentLengthを「15728640」に設定します(15 x 1024 x 1024)。

<system.web>
   <!-- maxRequestLength for asp.net, in KB --> 
   <httpRuntime maxRequestLength="15360" ></httpRuntime> 
</system.web>

<system.webServer>              
   <security> 
      <requestFiltering> 
         <!-- maxAllowedContentLength, for IIS, in bytes --> 
         <requestLimits maxAllowedContentLength="15728640" ></requestLimits>
      </requestFiltering> 
   </security>
</system.webServer>

MSDNリファレンスリンクhttps : //msdn.microsoft.com/en-us/library/e1f13641(VS.80).aspx


17

web.configの次の行で最大アップロードサイズが設定されると思います。

<system.web>

        <httpRuntime maxRequestLength="600000"/>
</system.web>

一日の半分を過ごした後、これは私を助けたものです!!! どうもありがとう !!!
Sagar Khatri

13

アプリケーションのweb.configで、最大2 GBの場合:

<system.web>
  <compilation debug="true" targetFramework="4.5" />
  <httpRuntime targetFramework="4.5" maxRequestLength="2147483647" executionTimeout="1600" requestLengthDiskThreshold="2147483647" />
</system.web>

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

7

その窓2003は/ IIS 6.0の場合は、AspMaxRequestEntityAllowedをチェックアウト= "204800"ファイル内のMetabase.xmlのはフォルダーC:\ WINDOWS \ system32に\ inetsrvに\

私の意見では、 "204800"(〜205Kb)のデフォルト値はほとんどのユーザーには低すぎます。値を最大値と思われる値に変更するだけです。

編集後にファイルを保存できない場合は、ISSサーバーを停止するか、サーバーでファイルの編集を許可する必要があります。

代替テキスト
(ソース:itmaskinen.se

編集:私は質問を正しく読みませんでした(webconfigでmaxrequestを設定する方法)。しかし、この情報は他の人々にとって興味があるかもしれません、多くの人々は自分のサイトをwin2000-serverからwin2003に移動し、機能するアップロード機能を持っていて、突然Request.BinaryRead Failedエラーを受け取りました。だから私は答えをここに残します。


5

私は勝利2008 IISサーバーで同じ問題を抱えていますが、web.configにこの構成を追加する問題を解決しました。

<system.web>
    <httpRuntime executionTimeout="3600" maxRequestLength="102400" 
     appRequestQueueLimit="100" requestValidationMode="2.0"
     requestLengthDiskThreshold="10024000"/>
</system.web>

requestLengthDiskThresholdそれは自分のアプリケーションのためには小さすぎですので、デフォルトでは80000バイトです。requestLengthDiskThresholdはバイト単位で測定され、maxRequestLengthはKバイト単位で表されます。

この問題は、アプリケーションがSystem.Web.UI.HtmlControls.HtmlInputFileサーバーコンポーネントを使用している場合に発生します。これを解決するには、requestLengthDiskThresholdを増やす必要があります。


1
msdn.microsoft.com/en-us/library/e1f13641(v=vs.100).aspxによると、「入力ストリームのバッファリングしきい値の制限をキロバイトで指定します。この値はmaxRequestLength属性を超えてはなりません。」それで、それは多くてもリクエストの長さと同じであるべきですか?
Jeff

はい、@ Jeff、requestLengthDiskThresholdの値はmaxRequestLengthより小さくする必要がありますが、最初の値はバイト単位で表されます。requestLengthDiskThresholdがmaxRequestLengthより大きい場合は、ConfigurationErrorsExceptionをスローする必要があるため、自分で正しい値をテストできます。forums.asp.net/t/…を
Massimo Zerbini

4

Framework 4.6を使用している場合

<httpRuntime targetFramework="4.6.1" requestValidationMode="2.0" maxRequestLength="10485760"  />

4

最大ファイルサイズは、単一のMVCコントローラーまたはアクションに制限できます。
これには、web.config <location>タグを使用できます。

<location path="YourAreaName/YourControllerName>/YourActionName>">
  <system.web>
    <!-- 15MB maxRequestLength for asp.net, in KB 15360 -->
    <httpRuntime maxRequestLength="15360" />
  </system.web>
  <system.webServer>
    <security>
      <requestFiltering>
        <!-- 15MB maxAllowedContentLength, for IIS, in bytes 15728640 -->
        <requestLimits maxAllowedContentLength="15728640" />
      </requestFiltering>
    </security>
  </system.webServer>
</location>

または、エリアの独自のweb.configにこれらのエントリを追加できます。


これはリクエストのサイズを検証するためにより安全であるため、これを高くして、受け入れられた回答の代わりに使用する必要があります。
ジョナサンオルテガ

4

私はそれが古い質問であることを知っています。

だからこれはあなたがしなければならないことです:

あなたのweb.configファイルに、これを追加します<system.web>

<!-- 3GB Files / in kilobyte (3072*1024) -->
<httpRuntime targetFramework="4.5" maxRequestLength="3145728"/>

そしてこれの下に<system.webServer>

<security>
    <requestFiltering>

      <!-- 3GB Files / in byte (3072*1024*1024) -->
      <requestLimits maxAllowedContentLength="3221225472" />

    </requestFiltering>
</security>

これがどのように機能するかをコメントで見る。1つはバイト単位で、もう1つはキロバイト単位である必要があります。お役に立てば幸いです。


2

このコードブロックをアプリケーションのweb.configファイルに書き込むことができます。

<httpRuntime maxRequestLength="2048576000" />
<sessionState timeout="3600"  />

そのコードを書くことで、今よりも大きなファイルをアップロードできます



0

ASPアップロードコントロールのファイルサイズ増やす方法に関するブログ投稿があります

投稿から:

デフォルトでは、FileUploadコントロールは最大4MBのファイルのアップロードを許可し、実行タイムアウトは110秒です。これらのプロパティは、web.configファイルのhttpRuntimeセクション内から変更できます。maxRequestLengthプロパティは、アップロードできる最大ファイルサイズを決定します。executionTimeoutプロパティは、実行の最大時間を決定します。


0

ローカルマシンで機能し、IISでの展開後に機能しない場合(Windows Server 2008 R2を使用しました)、解決策があります。

IIS(inetmgr)を開きます。Webサイトに移動します。右側にあるコンテンツ(リクエストフィルタリング)に移動します。機能設定の編集に移動します。最大コンテンツサイズを(必要なバイト数)に変更します。次のスレッドhttp://www.iis.net/configreference/system.webserver/security/requestfiltering/requestlimitsからヘルプを利用することもでき ます


0

SSL証明書を使用する場合は、SSLパイプラインのF5設定configure.Importantを使用します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.