최대 요청 길이를 초과했습니다.


1049

내 사이트에서 비디오를 업로드하려고 할 때 최대 요청 길이를 초과했습니다 오류가 발생 합니다.

이 문제를 어떻게 해결합니까?

답변:


1971

응용 프로그램을 호스팅하기 위해 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에 해당합니다.)


7
감사는 sachin와 나는 <httpRuntime을 maxRequestLength의 = "32768"executionTimeout에 = "180"/> 같은 몇 가지 추가
수르야 sasidhar

11
maxAllowedContentLength는 킬로바이트가 아닌 바이트 단위 여야하므로 제공된 예제는 동일하지 않습니다.
Matthew Sharpe

33
IIS 7.5와 VS RC 2012 IIS Express를 사용하여 둘 다 설정해야했습니다. httpRuntime one은 ASP.NET의 최대 길이를 구성하고 requestLimits는 IIS의 최대 길이, stackoverflow.com/questions/6327452/…forums.iis.net/t/1169846.aspx
Despertar

18
maxAllowedContentLength가 킬로바이트가 아닌 바이트 단위임을 다시 지적 할 가치가 있습니다. 두 측정 값은 같은 측정 단위가 아니므로 같은 숫자가 아니어야합니다.
Pandincus

13
이 설정을 폴더 Web.config내부의 설정 대신 기본 설정에 추가 해야 Views합니다
Serj Sagan

553

나는 그것이 여기에 언급되지 않았다고 생각하지만, 이것을 작동시키기 위해서는 web.config 에이 두 값을 모두 제공해야했습니다.

system.web

<httpRuntime maxRequestLength="1048576" executionTimeout="3600" />

그리고 system.webServer

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

중요 :이 두 값이 일치해야합니다. 이 경우 내 최대 업로드는 1024MB입니다.

maxRequestLength에는 1048576 킬로바이트 가 있으며 maxAllowedContentLength에는 1073741824 바이트가 있습니다.

나는 그것이 명백하다는 것을 알고 있지만 간과하기 쉽습니다.


5
우려 할만한 점 :이 답변은 IIS-Express (WebMatrix를 사용하는 asp.net-webpages)에서도 완벽하게 작동합니다.
VoidKing

5
그렇습니다, 이것은 Sachin의 대답 대신 저에게 효과적이었습니다. Azure에서도 작동합니다.
Gautam Jain

5
이것은 정답입니다 ... 두 항목이 모두 있어야합니다. MVC 3의 경우 프로젝트 루트 web.config파일 에있을 수 있습니다 .
Miguel Angelo

2
또 다른 중요한 것은 Karl이 언급 한 'executionTimeout'입니다.
Muhammad Amin

26
<httpRuntime targetFramework = "4.5"maxRequestLength = "1048576"executionTimeout = "3600"/>
Ken Mc

195

이 변경 사항을 전체 사이트가 아닌 업로드에 사용될 것으로 제한하는 것이 좋습니다.

<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>

위치에 대한 좋은 해결책. 그러나 MVC로 작업 할 때 (따라서 경로 작업) 위치 경로가 있습니까?
Luuk Krijnen

1
업로드 작업을 설정 한 경로에 해당하는 URL입니다. 필자의 경우 양식을 게시하는 업로드 작업이있는 문서 컨트롤러가 있습니다. 귀하의 경우 귀하의 행동에 대한 URL이 될 것입니다.
Nick Albrecht

이 답변을 좋아하는 사람은 this을 참조하십시오 .
DontVoteMeDown

2
야 당신 바위. 미안하지만 내 작은 투표는 충분하지 않았다.
Nicholas Petersen

1
이것은 MVC v5를 포함하여 WebAPI와 함께 작동합니다. MVC Core로 ASP.NET Core에 도달하면 Kestrel에 대해 다른 옵션을 설정해야합니다.
Nick Albrecht

44

누군가가이 예외를 처리하고 사용자에게 의미있는 설명 ( "너무 큰 파일을 업로드하고 있습니다"과 같은)을 보여줄 방법을 찾고있는 경우를 대비하여 :

//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 이상 필요)


1
예외 생성의 경우 maxAllowedContentLength가 (maxRequestLength * 1024)보다 높아야합니다.
Der_Meister

이 게시물은 사용자에게 경고하는 데 필요한 내용을 알려주었지만 제대로 작동하려면 HttpContext.Current.ClearError()필요했습니다 Response.Redirect(). web.config그것의 관점에서 의 maxRequestLength속성 과 함께 작동합니다 httpRuntime.
nrod

onchange업로드 버튼 의 이벤트를 사용 하고 업로드 파일 크기를 최대 업로드 제한과 비교 하여 페이지 수준에서 JS를 통해 파일 크기 확인 및 사용자에게 친숙한 메시지를 수행 할 수 있습니다 .
Alfred Wallace

29

최대 요청 크기는 기본적으로 4MB (4096 KB)

여기에 설명되어 있습니다 .

위의 기사는이 문제를 해결하는 방법도 설명합니다 :)


4
링크는 Microsoft 지원 홈페이지로 이동합니다
Bishop

1
뭔가 잘못되었을 수도 있습니다. 링크는 여기로
gofr1

22

구성 파일을 업데이트 할 수 없지만 파일 업로드를 처리하는 코드를 제어하는 ​​경우 HttpContext.Current.Request.GetBufferlessInputStream(true) .

true가치disableMaxRequestLength 매개 변수는 구성 요청 제한을 무시하는 프레임 워크를 알려줍니다.

자세한 설명은 https://msdn.microsoft.com/en-us/library/hh195568(v=vs.110).aspx를 방문 하십시오.


굉장한 데, 최고 답변의 투표 수는 1600 표를 넘고 5 개뿐입니다. 이것은 종종 우리가 원하는 단일 행동이기 때문에 훌륭합니다. 또한, 다른 설정 등을 혼동하지 않아도됩니다.
Nicholas Petersen

이것이 내가 찾던 것입니다.
크리스 카티 냐니

20

web.config에는 업로드 된 파일의 최대 크기를 구성하는 요소가 있습니다.

<httpRuntime 
    maxRequestLength="1048576"
  />

11

한 곳에서 모든 답변을 요약하려면 :

<system.web>
  <httpRuntime targetFramework="4.5.2" maxRequestLength="1048576"/>
</system.web>

<system.webServer>
  <security>
    <requestFiltering>
      <requestLimits maxAllowedContentLength="1073741824" />
    </requestFiltering>
  </security>
</system.webServer>

규칙 :

  • maxRequestLength (kb로 표시) 값은 maxAllowedContentLength (바이트로 표시)와 일치해야합니다.
  • system.web 섹션은 대부분 "httpRuntime"을 포함하고있을 수 있습니다. targetFramework를 사용 된 .net 버전으로 설정하십시오.

노트:

  • maxRequestLength의 기본값은 4096 (4mb)입니다. 최대 값은 2,147,483,647입니다.
  • maxAllowedContentLength의 기본값은 30,000,000 (약 30mb)입니다. 최대 값은 4,294,967,295입니다.

더 많은 정보 MSDN


8

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>

6

며칠 동안 나를 귀찮게했습니다. Web.config 파일을 수정했지만 작동하지 않았습니다. 내 프로젝트에는 두 개의 Web.config 파일이 있으며 ROOT 디렉토리의 파일을 수정해야 합니다. 이것이 도움이되기를 바랍니다.


5

사이트의 응용 프로그램에 대한 요청이있는 경우 루트 web.config에서 maxRequestLength를 설정해야합니다. 응용 프로그램 web.config의 maxRequestLength가 무시 된 것으로 보입니다.


내가 이것을 두 번 이상 공표 할 수 있다면 이것은 내 인생의 하루를 낭비했다. 가상 디렉토리 하위 응용 프로그램이있는 경우, 당신은 넣어 가지고 httpRuntime maxRequestLength="###requestLimits maxAllowedContentLength이 아닌 하위 응용 프로그램 수준에서, 루트 레벨에서 웹 설정에서.
nickvans

1

web.config 파일에 여러 개의 system.web 섹션이 있다는 사실에 놀랐습니다. 구성 레벨의 <httpRuntime maxRequestLength = "1048576"/>를 system.web 섹션에 추가했을 때 작동했습니다.


1

C:\Windows\System32\inetsrv\config\applicationHost.config파일 을 편집 <requestLimits maxAllowedContentLength="1073741824" />하고 끝에 추가 해야했습니다 ...

<configuration>
    <system.webServer>
        <security>
            <requestFiltering>

부분.

이 Microsoft 지원 제


자신의 프로젝트에서 web.config가 이것들을 재정의해야하므로 수정할 필요가 없습니다 applicationHost.config.
bvgheluwe

-3

컴파일되지 않은 구성 웹에 추가 할 수 있습니다

<system.web> 
  <httpRuntime maxRequestLength="1024" executionTimeout="3600" /> 
  <compilation debug="true"/> 
</system.web> 
<security> 
  <requestFiltering> 
    <requestLimits maxAllowedContentLength="1048576"/> 
  </requestFiltering> 
</security>

1
executionTimeout특성이 요구되는 것과 아무 상관이없는, 어느 쪽도 아니는 않습니다 compilation태그를.
Mathias Lykkegaard Lorenzen
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.