จะเพิ่มขนาดไฟล์สูงสุดใน ASP.NET ได้อย่างไร?


238

ฉันมีรูปแบบที่ยกเว้นการอัปโหลดไฟล์ใน ASP.NET ฉันต้องเพิ่มขนาดการอัปโหลดสูงสุดเป็นค่าเริ่มต้น 4 MB

ฉันได้พบในบางสถานที่อ้างอิงด้านล่างรหัสที่MSDN

[ConfigurationPropertyAttribute("maxRequestLength", DefaultValue = )]

ไม่มีการอ้างอิงจริงอธิบายถึงวิธีการใช้งานและฉันได้ลองหลายสิ่งโดยไม่ประสบความสำเร็จ ฉันต้องการแก้ไขแอททริบิวนี้เฉพาะบางเพจที่ต้องการอัปโหลดไฟล์

นี่เป็นเส้นทางที่ถูกต้องหรือไม่? และฉันจะใช้สิ่งนี้ได้อย่างไร


คุณแน่ใจหรือว่าเป็นข้อ จำกัด ของรหัสและไม่ใช่ข้อ จำกัด ของโฮสต์ IIS มีขีด จำกัด เช่นกัน
MrChrister

ฉันค่อนข้างแน่ใจว่ามันเป็นข้อ จำกัด . Net คำตอบด้านล่างใช้ได้สำหรับฉัน
Eddie

คำตอบ:


406

การตั้งค่านี้จะอยู่ในไฟล์ web.config ของคุณ มันมีผลกับแอปพลิเคชันทั้งหมดแม้ว่า ... ฉันไม่คิดว่าคุณจะสามารถตั้งค่าต่อหน้า

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

"xxx" เป็น KB ค่าเริ่มต้นคือ 4096 (= 4 MB)


6
นี่ทำให้ฉันทำงานได้ทั้งไซต์ ฉันตั้งไว้ที่ 10240 (หรือ 10 MB) ในตอนนี้ ขอบคุณ!
Eddie

12
ดูคำตอบของฉันหากคุณใช้ IIS7 + และนี่ไม่ทำงาน
4 ธ.ค.

เป็นไปได้หรือไม่ที่จะ จำกัด สิ่งนี้ไว้ในคอนโทรลเลอร์เดียว?
Guillermo Varini

@Eddie ฉันมีสองไฟล์ web.config ฉันใช้มันทั้งสอง แต่มันไม่ทำงาน ฉันจะทำมันได้อย่างไร
Ahmad

2
นี่เป็นไปได้ที่จะทำบนเส้นทางที่เฉพาะเจาะจงเช่นกัน <location path = "Api / Controller"> <system.web> <authorization> <อนุญาตผู้ใช้ = "*" /> </authorization> <httpRuntime maxRequestLength = "102400" /> </system.web> </location> (ไม่จำเป็นต้องมีสิทธิ์อนุญาต)
nios

182

สำหรับ IIS 7+ รวมถึงการเพิ่มการตั้งค่า httpRuntime maxRequestLength คุณต้องเพิ่ม:

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

หรือใน IIS (7):

  • เลือกเว็บไซต์ที่คุณต้องการเปิดใช้งานเพื่อยอมรับการอัปโหลดไฟล์ขนาดใหญ่
  • ในหน้าต่างหลักคลิกสองครั้ง 'ขอตัวกรอง'
  • เลือก "แก้ไขการตั้งค่าคุณสมบัติ"
  • ปรับเปลี่ยน "ความยาวเนื้อหาสูงสุดที่อนุญาต (ไบต์)"

ฉันลืมเกี่ยวกับกิโลไบต์: p
Andrew Myhre

10
คุณอาจจำเป็นต้องตั้งค่าทั้งสอง maxRequestLengthและmaxAllowedContentLengthเพื่อให้มันทำงาน ... ดูstackoverflow.com/questions/6327452/…
MikeM

7
@AndrewMyhre maxAllowedContentLength มีหน่วยเป็นไบต์ไม่ใช่ KB เอกสารของ Microsoft ระบุว่าค่าเริ่มต้นคือ 30 MB
Dan Randolph

1
@DanRandolph จริง ๆ แล้วค่าเริ่มต้นคือ 30000000 (ประมาณ 28.6MB) ตามที่บันทึกไว้ที่iis.net/configreference/system.webserver/security/ …
aaaantoine

คุณต้องการการตั้งค่าทั้งสองอย่างแน่นอน
mohrtan

74

ในการเพิ่มขนาด จำกัด ของไฟล์ที่อัปโหลดเรามีสองวิธี

1. IIS6 หรือต่ำกว่า

โดยค่าเริ่มต้นใน ASP.Net ขนาดสูงสุดของไฟล์ที่จะอัพโหลดไปยังเซิร์ฟเวอร์อยู่ที่ประมาณ4MB ค่านี้สามารถเพิ่มได้โดยการแก้ไข แอตทริบิวต์maxRequestLengthในweb.config web.config

เตือนความจำ: 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.Means วิธีการทำงานของไปป์ไลน์คือตรวจสอบค่า 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

สำหรับขีด จำกัด สูงสุด 2 GB บนเว็บแอปพลิเคชันของคุณ config:

<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

หาก windows 2003 / IIS 6.0 ตรวจสอบ AspMaxRequestEntityAllowed = "204800" ในไฟล์metabase.xmlอยู่ในโฟลเดอร์ C: \ windows \ system32 \ inetsrv \

ค่าเริ่มต้นของ "204800" (~ 205Kb) อยู่ในความคิดของฉันต่ำเกินไปสำหรับผู้ใช้ส่วนใหญ่ เพียงแค่เปลี่ยนค่าเป็นสิ่งที่คุณคิดว่าควรจะสูงสุด

หากคุณไม่สามารถบันทึกไฟล์หลังจากแก้ไขคุณต้องหยุด ISS-server หรือเปิดใช้งานเซิร์ฟเวอร์เพื่อให้สามารถแก้ไขไฟล์ได้:

ข้อความแสดงแทน
(ที่มา: itmaskinen.se )

แก้ไข: ฉันไม่ได้อ่านคำถามที่ถูกต้อง (วิธีการตั้งค่าสูงสุดใน webconfig) แต่ informatin นี้อาจเป็นสิ่งที่ขัดขวางสำหรับคนอื่น ๆ หลายคนที่ย้ายไซต์ของตนจากเซิร์ฟเวอร์ win2000 ไปยัง win2003 และมีฟังก์ชั่นอัพโหลดที่ใช้งานได้และทันใดนั้นข้อผิดพลาดRequest.BinaryRead Failedจะใช้งาน ดังนั้นฉันจะทิ้งคำตอบไว้ที่นี่


5

ฉันมีปัญหาเดียวกันในเซิร์ฟเวอร์ IIS 2008 ชนะฉันได้แก้ไขปัญหาการเพิ่มการกำหนดค่านี้ใน web.config:

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

requestLengthDiskThresholdโดยเริ่มต้นคือ 80000 ไบต์ดังนั้นมันจึงมีขนาดเล็กเกินไปสำหรับการใช้งานของฉัน requestLengthDiskThreshold ถูกวัดเป็นไบต์และ maxRequestLength แสดงเป็น Kbytes

มีปัญหาเกิดขึ้นหากแอปพลิเคชันใช้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 เพื่อให้คุณสามารถทดสอบค่าที่ถูกต้องด้วยตัวคุณเอง ดูforum.asp.net/t/…
Massimo Zerbini


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 ของพื้นที่


นี่ควรจะสูงกว่าและใช้แทนคำตอบที่ยอมรับได้เนื่องจากจะปลอดภัยกว่าสำหรับการตรวจสอบขนาดของคำขอ
Jonathan Ortega

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>

คุณเห็นในความคิดเห็นว่ามันทำงานอย่างไร ในอันที่หนึ่งคุณต้องมี sie เป็นไบต์และอีกอันหนึ่งเป็นกิโลไบต์ หวังว่าจะช่วย


2

คุณสามารถเขียนบล็อคของรหัสนั้นในไฟล์ web.config แอปพลิเคชันของคุณ

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

โดยการเขียนโค้ดนั้นคุณสามารถอัปโหลดไฟล์ขนาดใหญ่กว่านี้ได้



0

ฉันมีบล็อกโพสต์เกี่ยวกับวิธีเพิ่มขนาดไฟล์สำหรับการควบคุมการอัพโหลด aspควบคุมการอัปโหลด

จากโพสต์:

ตามค่าเริ่มต้นตัวควบคุม FileUpload อนุญาตให้อัพโหลดไฟล์ได้สูงสุด 4MB และหมดเวลาการดำเนินการคือ 110 วินาที คุณสมบัติเหล่านี้สามารถเปลี่ยนได้จากภายในส่วน httpRuntime ของไฟล์ web.config คุณสมบัติ maxRequestLength กำหนดขนาดไฟล์สูงสุดที่สามารถอัปโหลดได้ คุณสมบัติ executionTimeout กำหนดเวลาสูงสุดสำหรับการดำเนินการ


0

ถ้ามันทำงานในเครื่องของคุณและไม่ทำงานหลังจากการปรับใช้ใน IIS (ฉันใช้ Windows Server 2008 R2) ฉันมีทางออก

เปิด IIS (inetmgr) ไปที่เว็บไซต์ของคุณทางด้านขวาไปที่เนื้อหา (การกรองคำขอ) ไปที่แก้ไขการตั้งค่าคุณสมบัติเปลี่ยนขนาดเนื้อหาสูงสุดเป็น (คุณจำเป็นต้องใช้ไบต์) สิ่งนี้จะทำงาน นอกจากนี้คุณยังสามารถรับความช่วยเหลือจากกระทู้ต่อไปนี้ http://www.iis.net/configreference/system.webserver/security/requestfiltering/requestlimits


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.