Saya mendapatkan kesalahan Panjang permintaan maksimum terlampaui saat saya mencoba mengunggah video di situs saya.
Bagaimana cara saya memperbaikinya?
Saya mendapatkan kesalahan Panjang permintaan maksimum terlampaui saat saya mencoba mengunggah video di situs saya.
Bagaimana cara saya memperbaikinya?
Jawaban:
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 :
maxRequestLength
diukur dalam kilobytemaxAllowedContentLength
diukur dalam byte itulah sebabnya nilainya berbeda dalam contoh konfigurasi ini. (Keduanya setara dengan 1 GB.)
Web.config
alih-alih yang ada di dalam Views
folder
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.
web.config
file root proyek .
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>
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)
HttpContext.Current.ClearError()
diperlukan agar bisa Response.Redirect()
berfungsi dengan baik. Dalam hal web.config
ini berfungsi hanya dengan maxRequestLength
atribut httpRuntime
.
onchange
acara di tombol unggah dan membandingkan ukuran file unggahan dengan batas unggah maksimal.
Jika Anda tidak dapat memperbarui file konfigurasi tetapi kontrol kode yang menangani unggahan file gunakan HttpContext.Current.Request.GetBufferlessInputStream(true)
.
The true
nilai disableMaxRequestLength
parameter memberitahu kerangka untuk mengabaikan batas permintaan dikonfigurasi.
Untuk deskripsi terperinci, kunjungi https://msdn.microsoft.com/en-us/library/hh195568(v=vs.110).aspx
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:
Catatan:
info lebih lanjut MSDN
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>
Jika Anda memiliki permintaan untuk membuka aplikasi di situs, pastikan Anda menetapkan maxRequestLength di root web.config. MaxRequestLength di web.config aplikasi tampaknya diabaikan.
httpRuntime maxRequestLength="###
dan requestLimits maxAllowedContentLength
dalam konfigurasi web di tingkat root, bukan di tingkat sub-aplikasi.
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.
Saya harus mengedit C:\Windows\System32\inetsrv\config\applicationHost.config
file dan menambahkan <requestLimits maxAllowedContentLength="1073741824" />
ke ujung ...
<configuration>
<system.webServer>
<security>
<requestFiltering>
bagian.
applicationHost.config
.
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>
executionTimeout
atribut tidak ada hubungannya dengan apa yang diminta, dan begitu juga dengan compilation
tag.