จะตั้งค่า maxAllowedContentLength เป็น 500MB ในขณะทำงานบน IIS7 ได้อย่างไร?


99

ฉันเปลี่ยน maxAllowedContentLength เป็น

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

ใน web.config ของฉัน แต่เมื่อทำงานบน IIS7 ฉันได้รับข้อผิดพลาดนี้:

แอตทริบิวต์ "maxAllowedContentLength" ไม่ถูกต้อง ไม่ใช่จำนวนเต็มที่ไม่ได้ลงนามที่ถูกต้อง

http://i.stack.imgur.com/u1ZFe.jpg

แต่เมื่อฉันรันในเซิร์ฟเวอร์ VS มันจะทำงานตามปกติโดยไม่มีข้อผิดพลาดใด ๆ

จะกำหนดค่าเว็บไซต์ของฉันให้อนุญาตให้อัพโหลดไฟล์ขนาด 500MB ได้อย่างไรโดยไม่มีปัญหานี้บน IIS7


1
5024000000 (ขอฉันเพิ่มตัวคั่นพันตัว) 5.024.000.000 มีขนาดใหญ่กว่า int ที่ไม่ได้ลงชื่อสูงสุด 4.294.967.295 คุณกำลังมองหา 502.400.000 เป็นค่าในการกำหนดค่า ur แทน (โดยไม่มีตัวคั่นหลักพัน)
Lennart

คำตอบ:


97

ตามที่MSDN maxAllowedContentLengthมีประเภทuintของมันค่าสูงสุดเป็น 4294967295 ไบต์ = 3.99 GB

ดังนั้นควรใช้งานได้ดี

ดูเพิ่มเติมขอบทความขีด จำกัด IIS ส่งคืนข้อผิดพลาดอย่างใดอย่างหนึ่งเหล่านี้เมื่อไม่ได้กำหนดค่าส่วนที่เหมาะสมเลยหรือไม่

ดูเพิ่มเติม: เกินความยาวสูงสุดของคำขอ


ดังนั้นค่านี้ฉันมี 5024000000 เป็น gb ?!
Amr Elgarhy

17
5024000000> 4294967295
Sam

2
500MB = 524288000 ซึ่งตอนนี้น้อยกว่า 4294967295
Amr Elgarhy

155

ขีด จำกัด ของการร้องขอใน. Net สามารถกำหนดค่าได้จากคุณสมบัติสองอย่างด้วยกัน:

อันดับแรก

  • Web.Config/system.web/httpRuntime/maxRequestLength
  • หน่วยวัด: กิโลไบต์
  • ค่าเริ่มต้น 4096 KB (4 MB)
  • สูงสุด ค่า 2147483647 KB (2 TB)

ประการที่สอง

  • Web.Config/system.webServer/security/requestFiltering/requestLimits/maxAllowedContentLength (เป็นไบต์)
  • หน่วยวัด: ไบต์
  • ค่าเริ่มต้น 30000000 ไบต์ (28.6 MB)
  • สูงสุด ค่า 4294967295 ไบต์ (4 GB)

อ้างอิง:

ตัวอย่าง:

<location path="upl">
   <system.web>
     <!--The default size is 4096 kilobytes (4 MB). MaxValue is 2147483647 KB (2 TB)-->
     <!-- 100 MB in kilobytes -->
     <httpRuntime maxRequestLength="102400" />
   </system.web>
   <system.webServer>
     <security>
       <requestFiltering>          
         <!--The default size is 30000000 bytes (28.6 MB). MaxValue is 4294967295 bytes (4 GB)-->
         <!-- 100 MB in bytes -->
         <requestLimits maxAllowedContentLength="104857600" />
       </requestFiltering>
     </security>
   </system.webServer>
 </location>

4
มีประโยชน์มากอย่างไรก็ตามฉันเชื่อว่าค่าสูงสุดสำหรับ maxAllowedContentLength อยู่ที่ประมาณ 4 GB ไม่ใช่ 4 TB
Snicklefritz

บทความระบุว่า "ระบุความยาวสูงสุดของเนื้อหาในคำขอเป็นไบต์" หมายถึงคีย์การกำหนดค่าทั้งสองใช้ BYTES ทำให้ขนาดคำขอสูงสุดเท่ากันคือ 4GB
abatishchev

13

IIS v10 (แต่ควรจะเหมือนกันสำหรับ IIS 7.x)

เพิ่มอย่างรวดเร็วสำหรับผู้ที่กำลังมองหาค่าสูงสุดตามลำดับ

สูงสุดสำหรับmaxAllowedContentLengthคือ: UInt32.MaxValue 🡒 4294967295 bytes:~4GB

สูงสุดสำหรับmaxRequestLengthคือ: Int32.MaxValue🡒 2147483647 bytes:~2GB

web.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.web>
    <!-- ~ 2GB -->
    <httpRuntime maxRequestLength="2147483647" />
  </system.web>
  <system.webServer>
    <security>
      <requestFiltering>
        <!-- ~ 4GB -->
        <requestLimits maxAllowedContentLength="4294967295" />
      </requestFiltering>
    </security>
  </system.webServer>
</configuration>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.