Panjang permintaan maksimum terlampaui.


1050

Saya mendapatkan kesalahan Panjang permintaan maksimum terlampaui saat saya mencoba mengunggah video di situs saya.

Bagaimana cara saya memperbaikinya?

Jawaban:


1973

Jika Anda menggunakan IIS untuk hosting aplikasi Anda, maka ukuran file unggahan default adalah 4MB. Untuk meningkatkannya, silakan gunakan bagian di bawah ini di web.config-

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

Untuk IIS7 dan di atasnya, Anda juga perlu menambahkan baris di bawah ini:

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

Catatan :

  • maxRequestLengthdiukur dalam kilobyte
  • maxAllowedContentLengthdiukur dalam byte

itulah sebabnya nilainya berbeda dalam contoh konfigurasi ini. (Keduanya setara dengan 1 GB.)


7
Terima kasih sachin dan saya menambahkan beberapa hal seperti <httpRuntime maxRequestLength = "32768" eksekusiTimeout = "180" />
Surya sasidhar

11
maxAllowedContentLength harus dalam byte, bukan kilobyte, jadi contoh yang diberikan tidak setara.
Matthew Sharpe

33
Dengan IIS 7.5 dan VS RC 2012 IIS Express saya harus mengatur KEDUA dari ini. Yang httpRuntime mengkonfigurasi panjang maksimum ASP.NET sementara requestLimits mengkonfigurasi panjang maks IIS, stackoverflow.com/questions/6327452/… dan forums.iis.net/t/1169846.aspx
Despertar

18
Perlu ditunjukkan, sekali lagi, bahwa maxAllowedContentLength adalah dalam byte, bukan kilobyte. Kedua nilai tersebut seharusnya bukan angka yang sama, karena keduanya bukan unit pengukuran yang sama.
Pandincus

13
Pastikan Anda menambahkan pengaturan ini ke utama Web.configalih-alih yang ada di dalam Viewsfolder
Serj Sagan

553

Saya tidak berpikir itu telah disebutkan di sini, tetapi untuk membuatnya bekerja, saya harus menyediakan kedua nilai ini di web.config:

Di system.web

<httpRuntime maxRequestLength="1048576" executionTimeout="3600" />

Dan masuk system.webServer

<security>
    <requestFiltering>
        <requestLimits maxAllowedContentLength="1073741824" />
    </requestFiltering>
</security>

PENTING : Kedua nilai ini harus cocok. Dalam hal ini, unggahan maksimum saya adalah 1024 megabita.

maxRequestLength memiliki 1048576 KILOBYTES , dan maxAllowedContentLength memiliki 1073741824 BYTES .

Saya tahu ini sudah jelas, tetapi mudah untuk diabaikan.


5
Bagi siapa pun yang berkepentingan: Jawaban ini juga berfungsi dengan baik untuk IIS-Express (asp.net-webpage dengan WebMatrix)
VoidKing

5
Ya, ini adalah jawaban yang berhasil bagi saya alih-alih jawaban Sachin. Ini bekerja pada Azure juga.
Gautam Jain

5
Ini jelas jawaban yang tepat ... kedua entri harus ada. Dalam hal MVC 3, bisa dalam web.configfile root proyek .
Miguel Angelo

2
Hal lain yang penting adalah 'eksekusi Timeout' yang disebut oleh Karl
Muhammad Amin

26
Saya harus menggabungkan ini dengan baris yang ada untuk: <httpRuntime targetFramework = "4.5" maxRequestLength = "1048576" executTimeout = "3600" />
Ken Mc

195

Mungkin perlu dicatat bahwa Anda mungkin ingin membatasi perubahan ini ke URL yang Anda harapkan akan digunakan untuk mengunggah daripada seluruh situs Anda.

<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>

Solusi Bagus memikirkan lokasi. Tetapi apakah ada jalur lokasi saat bekerja dengan MVC (dan karenanya bekerja dengan rute)?
Luuk Krijnen

1
Ini akan menjadi URL yang sesuai dengan rute yang telah Anda atur tindakan unggahan Anda. Dalam kasus saya, saya memiliki pengontrol Dokumen dengan tindakan yang disebut Unggah yang saya kirimi formulir. Dalam kasus Anda itu akan menjadi apa pun url tindakan Anda.
Nick Albrecht

Bagi siapa pun yang menyukai jawaban ini, lihat ini .
DontVoteMeDown

2
Bung kamu batu. Maaf, tapi suara kecil saya yang kecil tidak cukup.
Nicholas Petersen

1
Ini akan bekerja dengan WebAPI hingga dan termasuk MVC v5. Setelah Anda menekan ASP.NET Core dengan MVC Core, maka ada opsi berbeda yang harus Anda tetapkan untuk Kestrel.
Nick Albrecht

44

Dan untuk berjaga-jaga jika seseorang mencari cara untuk menangani pengecualian ini dan menunjukkan penjelasan yang berarti kepada pengguna (sesuatu seperti "Anda mengunggah file yang terlalu besar"):

//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
    }
}

(Diperlukan ASP.NET 4 atau lebih baru)


1
maxAllowedContentLength harus lebih tinggi dari (maxRequestLength * 1024) untuk generasi pengecualian.
Der_Meister

Posting ini memberi saya apa yang saya butuhkan untuk memperingatkan pengguna tetapi HttpContext.Current.ClearError()diperlukan agar bisa Response.Redirect()berfungsi dengan baik. Dalam hal web.configini berfungsi hanya dengan maxRequestLengthatribut httpRuntime.
nrod

Validasi ukuran file dan pesan yang mudah digunakan dapat dilakukan melalui JS di tingkat halaman menggunakan onchangeacara di tombol unggah dan membandingkan ukuran file unggahan dengan batas unggah maksimal.
Alfred Wallace

29

Ukuran permintaan maksimum adalah, secara default, 4MB (4096 KB)

Ini dijelaskan di sini .

Artikel di atas juga menjelaskan cara memperbaiki masalah ini :)


4
Tautan ini mengarahkan saya ke beranda dukungan microsoft
Uskup

1
Mungkin ada yang salah. Tautan dialihkan ke sini
gofr1

22

Jika Anda tidak dapat memperbarui file konfigurasi tetapi kontrol kode yang menangani unggahan file gunakan HttpContext.Current.Request.GetBufferlessInputStream(true).

The truenilai disableMaxRequestLengthparameter memberitahu kerangka untuk mengabaikan batas permintaan dikonfigurasi.

Untuk deskripsi terperinci, kunjungi https://msdn.microsoft.com/en-us/library/hh195568(v=vs.110).aspx


LUAR BIASA, jadi bagaimana jawaban teratas memiliki> 1600 suara, dan ini hanya 5? Ini hebat, karena begitu sering, hanya satu tindakan yang kita inginkan. Selanjutnya, tidak mengacaukan pengaturan lain, dll.
Nicholas Petersen

Ini yang saya cari.
Chris Catignani

20

Ada elemen di web.config untuk mengonfigurasi ukuran maksimal file yang diunggah:

<httpRuntime 
    maxRequestLength="1048576"
  />

11

Untuk merangkum semua jawaban di satu tempat:

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

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

Aturan:

  • Nilai maxRequestLength (dinyatakan dalam kb) harus cocok dengan maxAllowedContentLength (dinyatakan dalam byte).
  • sebagian besar waktu bagian system.web Anda mungkin sudah mengandung "httpRuntime". atur targetFramework Anda ke versi .net yang digunakan.

Catatan:

  • nilai default untuk maxRequestLength adalah 4096 (4mb). nilai maks adalah 2.147.483.647
  • nilai default untuk maxAllowedContentLength adalah 30.000.000 (sekitar 30mb). nilai maks adalah 4.294.967.295

info lebih lanjut MSDN


8

maxRequestLength (panjang dalam KB) Di sini sebagai ex. Saya mengambil 1024 (1MB) maxAllowedContentLength (panjang dalam Bytes) harus sama dengan maxRequestLength Anda (1048576 bytes = 1MB).

<system.web>
   <httpRuntime maxRequestLength="1024" executionTimeout="3600" />
</system.web>

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

6

Itu mengganggu saya selama berhari-hari juga. Saya memodifikasi file Web.config tetapi tidak berhasil. Ternyata ada dua file Web.config di proyek saya, dan saya harus memodifikasi satu di direktori ROOT , bukan yang lain. Semoga ini bisa membantu.


5

Jika Anda memiliki permintaan untuk membuka aplikasi di situs, pastikan Anda menetapkan maxRequestLength di root web.config. MaxRequestLength di web.config aplikasi tampaknya diabaikan.


Jika saya bisa memperbaiki ini lebih dari sekali saya akan. Ini menghabiskan satu hari dalam hidupku. Jika Anda memiliki sub-aplikasi dir virtual, Anda harus meletakkan httpRuntime maxRequestLength="###dan requestLimits maxAllowedContentLengthdalam konfigurasi web di tingkat root, bukan di tingkat sub-aplikasi.
nickvans

1

Saya tersandung oleh kenyataan bahwa file web.config kami memiliki beberapa bagian system.web: berfungsi ketika saya menambahkan <httpRuntime maxRequestLength = "1048576" /> ke bagian system.web yang pada tingkat konfigurasi.


1

Saya harus mengedit C:\Windows\System32\inetsrv\config\applicationHost.configfile dan menambahkan <requestLimits maxAllowedContentLength="1073741824" />ke ujung ...

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

bagian.

Sesuai Artikel Dukungan Microsoft ini


web.config dari proyek Anda sendiri harus menimpanya, jadi saya tidak melihat perlunya memodifikasi applicationHost.config.
bvgheluwe

-3

Saya dapat menambahkan ke config web yang belum dikompilasi

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

1
The executionTimeoutatribut tidak ada hubungannya dengan apa yang diminta, dan begitu juga dengan compilationtag.
Mathias Lykkegaard Lorenzen
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.