내 사이트에서 비디오를 업로드하려고 할 때 최대 요청 길이를 초과했습니다 오류가 발생 합니다.
이 문제를 어떻게 해결합니까?
내 사이트에서 비디오를 업로드하려고 할 때 최대 요청 길이를 초과했습니다 오류가 발생 합니다.
이 문제를 어떻게 해결합니까?
답변:
응용 프로그램을 호스팅하기 위해 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
바이트 단위 로 측정 이것이이 구성 예제에서 값이 다른 이유입니다. (둘 다 1GB에 해당합니다.)
Web.config
내부의 설정 대신 기본 설정에 추가 해야 Views
합니다
나는 그것이 여기에 언급되지 않았다고 생각하지만, 이것을 작동시키기 위해서는 web.config 에이 두 값을 모두 제공해야했습니다.
에 system.web
<httpRuntime maxRequestLength="1048576" executionTimeout="3600" />
그리고 system.webServer
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1073741824" />
</requestFiltering>
</security>
중요 :이 두 값이 일치해야합니다. 이 경우 내 최대 업로드는 1024MB입니다.
maxRequestLength에는 1048576 킬로바이트 가 있으며 maxAllowedContentLength에는 1073741824 바이트가 있습니다.
나는 그것이 명백하다는 것을 알고 있지만 간과하기 쉽습니다.
web.config
파일 에있을 수 있습니다 .
이 변경 사항을 전체 사이트가 아닌 업로드에 사용될 것으로 제한하는 것이 좋습니다.
<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
업로드 버튼 의 이벤트를 사용 하고 업로드 파일 크기를 최대 업로드 제한과 비교 하여 페이지 수준에서 JS를 통해 파일 크기 확인 및 사용자에게 친숙한 메시지를 수행 할 수 있습니다 .
구성 파일을 업데이트 할 수 없지만 파일 업로드를 처리하는 코드를 제어하는 경우 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 (길이 바이트)는 maxRequestLength (1048576 bytes = 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
이 아닌 하위 응용 프로그램 수준에서, 루트 레벨에서 웹 설정에서.
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
태그를.