මම දෝෂය ලබා ගනිමි මගේ වෙබ් අඩවියේ වීඩියෝවක් උඩුගත කිරීමට උත්සාහ කරන විට උපරිම ඉල්ලීම් දිග ඉක්මවා ඇත.
මෙය නිවැරදි කරන්නේ කෙසේද?
මම දෝෂය ලබා ගනිමි මගේ වෙබ් අඩවියේ වීඩියෝවක් උඩුගත කිරීමට උත්සාහ කරන විට උපරිම ඉල්ලීම් දිග ඉක්මවා ඇත.
මෙය නිවැරදි කරන්නේ කෙසේද?
Answers:
ඔබගේ යෙදුම සත්කාරකත්වය සඳහා ඔබ IIS භාවිතා කරන්නේ නම්, පෙරනිමි උඩුගත ගොනු ප්රමාණය 4MB වේ. එය වැඩි කිරීමට, කරුණාකර ඔබේ 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 GB ට සමාන වේ.)
Web.config
ඇති එක වෙනුවට ඔබ මෙම සැකසුම ප්රධාන Views
එය මෙහි සඳහන් කර ඇතැයි මම නොසිතමි, නමුත් මෙය ක්රියාත්මක කිරීම සඳහා, වෙබ් කොන්ෆිග් හි මෙම අගයන් දෙකම සැපයීමට මට සිදු විය:
තුළ system.web
<httpRuntime maxRequestLength="1048576" executionTimeout="3600" />
සහ ඇතුළත system.webServer
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1073741824" />
</requestFiltering>
</security>
වැදගත් : මෙම අගයන් දෙකම ගැලපිය යුතුය. මෙම අවස්ථාවේදී, මගේ උපරිම උඩුගත කිරීම මෙගාබයිට් 1024 කි.
maxRequestLength හි කිලෝබයිට් 1048576 ක් ඇති අතර 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 හි දිග) මෙන්න ex. මම 1024 (1MB) maxAllowedContentLength (බයිට් වල දිග) ඔබේ උපරිම අවශ්යතාව (බයිට් 1048576 බයිට් = 1MB) ට සමාන විය යුතුය.
<system.web>
<httpRuntime maxRequestLength="1024" executionTimeout="3600" />
</system.web>
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1048576"/>
</requestFiltering>
</security>
</system.webServer>
එය ද දින ගණනක් මට කරදරයක් විය. මම Web.config ගොනුව වෙනස් කළ නමුත් එය ක්රියාත්මක වූයේ නැත. මගේ ව්යාපෘතියේ Web.config ගොනුවක් දෙකක් ඇති බව පෙනී ගිය අතර, මම රූට් නාමාවලියෙහි ඇති එක වෙනස් කළ යුතුය , අනෙක් ඒවා නොවේ. මෙය ප්රයෝජනවත් වේ යැයි සිතමි.
වෙබ් අඩවියේ යෙදුමකට යෑමට ඔබට ඉල්ලීමක් තිබේ නම්, ඔබ root.config මූලයේ maxRequestLength සැකසීමට වග බලා ගන්න. යෙදුම්වල web.config හි ඇති උපරිම අවශ්යතාවය නොසලකා හරින බවක් පෙනේ.
httpRuntime maxRequestLength="###
සහ requestLimits maxAllowedContentLength
වෙබ් වින්යාසය තුළ මූල මට්ටමේ මිස උප-යෙදුම් මට්ටමින් නොවේ.
අපගේ වෙබ්.කොන්ෆිග් ගොනුවට බහුවිධ පද්ධති.වෙබ් කොටස් තිබීම නිසා මා පුදුමයට පත් විය: වින්යාස මට්ටමින් පද්ධතියට වෙබ් වෙබ් අඩවියට <httpRuntime maxRequestLength = "1048576" /> එකතු කළ විට එය ක්රියාත්මක විය.
මට C:\Windows\System32\inetsrv\config\applicationHost.config
ගොනුව සංස්කරණය <requestLimits maxAllowedContentLength="1073741824" />
කර අවසානයට එකතු කිරීමට සිදු විය ...
<configuration>
<system.webServer>
<security>
<requestFiltering>
කොටස.
applicationHost.config
.
වින්යාසගත නොකළ වෙබ් වෙත මට එකතු කළ හැකිය
<system.web>
<httpRuntime maxRequestLength="1024" executionTimeout="3600" />
<compilation debug="true"/>
</system.web>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1048576"/>
</requestFiltering>
</security>
executionTimeout
ලක්ෂණයට ඉල්ලා දේ සමග ගෑවිලාවත් නැත, සහ වත් කරන්නේ compilation
ටැගය.