जब मैं अपनी साइट में वीडियो अपलोड करने का प्रयास कर रहा हूं, तो मुझे अधिकतम अनुरोध की लंबाई त्रुटि से अधिक हो रही है।
मैं यह कैसे तय करुं?
जब मैं अपनी साइट में वीडियो अपलोड करने का प्रयास कर रहा हूं, तो मुझे अधिकतम अनुरोध की लंबाई त्रुटि से अधिक हो रही है।
मैं यह कैसे तय करुं?
जवाबों:
यदि आप अपने आवेदन की मेजबानी के लिए IIS का उपयोग कर रहे हैं, तो डिफ़ॉल्ट अपलोड फ़ाइल का आकार 4 एमबी है। इसे बढ़ाने के लिए, कृपया नीचे दिए गए अनुभाग का उपयोग अपने में करें web.config
-
<configuration>
<system.web>
<httpRuntime maxRequestLength="1048576" />
</system.web>
</configuration>
IIS7 और इसके बाद के संस्करण के लिए, आपको नीचे की पंक्तियों को भी जोड़ना होगा:
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1073741824" />
</requestFiltering>
</security>
</system.webServer>
नोट :
maxRequestLength
किलोबाइट में मापा जाता हैmaxAllowedContentLength
बाइट्स में मापा जाता है जिसके कारण इस विन्यास उदाहरण में मान भिन्न हैं। (दोनों 1 जीबी के बराबर हैं।)
Web.config
अंदर एक के बजाय मुख्य में जोड़ रहे हैंViews
मुझे नहीं लगता कि इसका उल्लेख यहां किया गया है, लेकिन इस काम को पाने के लिए, मुझे web.config में इन दोनों मूल्यों की आपूर्ति करनी होगी:
में system.web
<httpRuntime maxRequestLength="1048576" executionTimeout="3600" />
और में system.webServer
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1073741824" />
</requestFiltering>
</security>
महत्वपूर्ण : इन दोनों मूल्यों का मिलान होना चाहिए। इस मामले में, मेरा अधिकतम अपलोड 1024 मेगाबाइट है।
maxRequestLength में 1048576 KILOBYTES हैं , और maxAllowedContentLength में 1073741824 BYTES हैं ।
मुझे पता है कि यह स्पष्ट है, लेकिन अनदेखी करना आसान है।
web.config
फाइल में हो सकता है ।
यह ध्यान देने योग्य हो सकता है कि आप इस परिवर्तन को उस URL तक सीमित करना चाहते हैं जिसकी आप अपलोड करने के लिए उपयोग करने की अपेक्षा करते हैं, फिर आपकी पूरी साइट पर।
<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>
और अगर किसी को इस अपवाद को संभालने के तरीके की तलाश है और उपयोगकर्ता को एक सार्थक व्याख्या दिखाती है (कुछ इस तरह कि "आप एक फ़ाइल अपलोड कर रहे हैं जो बहुत बड़ी है"):
//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
}
}
(ASP.NET 4 या बाद में आवश्यक)
HttpContext.Current.ClearError()
देने के Response.Redirect()
लिए आवश्यक था लेकिन इसे ठीक से काम करने की अनुमति देने के लिए आवश्यक था । के संदर्भ में web.config
यह सिर्फ की maxRequestLength
विशेषता के साथ काम करता है httpRuntime
।
onchange
अपलोड स्तर पर एक घटना का उपयोग करके जेएस के माध्यम से किया जा सकता है और अधिकतम अपलोड सीमा के साथ अपलोड फ़ाइल आकार की तुलना कर सकता है।
आप विन्यास फाइल को अद्यतन नहीं कर सकता है, लेकिन कोड है कि हैंडल फ़ाइल अपलोड का उपयोग को नियंत्रित HttpContext.Current.Request.GetBufferlessInputStream(true)
।
true
के लिए मूल्य disableMaxRequestLength
पैरामीटर कॉन्फ़िगर किया गया अनुरोध सीमा की अनदेखी करने के ढांचे में बताता है।
विस्तृत विवरण के लिए https://msdn.microsoft.com/en-us/library/hh195568(v=vs.110).aspx
एक ही स्थान पर सभी उत्तरों को संक्षेप में प्रस्तुत करने के लिए:
<system.web>
<httpRuntime targetFramework="4.5.2" maxRequestLength="1048576"/>
</system.web>
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1073741824" />
</requestFiltering>
</security>
</system.webServer>
नियम:
टिप्पणियाँ:
अधिक जानकारी MSDN
maxRequestLength (KB में लंबाई) यहाँ पूर्व के रूप में है। मैंने 1024 (1MB) अधिकतमअनुकूलित गति (बाइट्स में लंबाई) ले लिया, आपकी अधिकतम लंबाई (1048576 बाइट्स = 1MB) के समान होनी चाहिए।
<system.web>
<httpRuntime maxRequestLength="1024" executionTimeout="3600" />
</system.web>
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1048576"/>
</requestFiltering>
</security>
</system.webServer>
यदि आपके पास साइट में किसी एप्लिकेशन पर जाने का अनुरोध है, तो सुनिश्चित करें कि आपने रूट web.config में maxRequestLength सेट किया है। अनुप्रयोगों के web.config में maxRequestLength को नजरअंदाज किया जाता है।
httpRuntime maxRequestLength="###
और requestLimits maxAllowedContentLength
उप-ऐप्लिकेशन स्तर पर नहीं रूट स्तर पर एक वेब config में,।
मुझे इस तथ्य से उलझाया गया कि हमारी web.config फ़ाइल में कई system.web खंड हैं: जब मैंने कॉन्फ़िगरेशन स्तर पर <httpRuntime maxRequestLength = "1048576" /> system.web अनुभाग में जोड़ा तो यह काम कर गया।
मुझे C:\Windows\System32\inetsrv\config\applicationHost.config
फ़ाइल को संपादित करना था और <requestLimits maxAllowedContentLength="1073741824" />
अंत में जोड़ना था ...
<configuration>
<system.webServer>
<security>
<requestFiltering>
अनुभाग।
के अनुसार यह Microsoft समर्थन अनुच्छेद
applicationHost.config
।
मैं वेब को कॉन्फ़िगर नहीं कर सकता
<system.web>
<httpRuntime maxRequestLength="1024" executionTimeout="3600" />
<compilation debug="true"/>
</system.web>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1048576"/>
</requestFiltering>
</security>
executionTimeout
विशेषता क्या कहा जाता है के साथ कोई संबंध नहीं है, और न तो करता है compilation
टैग।