api post 요청시 RequestEntityTooLarge 뜨는 문제 질문이요..

.net core 로 만든 api가 서버컴퓨터에서 iis로 돌아가고 있습니다.

이 api 에 post 요청을 할 때 파일을 함께 첨부하는데요. 파일 사이즈가 5kb 는 잘 되는데 76kb 는 RequestEntityTooLarge 이 메시지가 뜨면서 안됩니다.

검색을 해본 결과 web.config 파일에 아래 값을 추가 하면 된다고 해서 추가했지만 안되네요.

<첫번째 방법>

>   <system.web>
>       <httpRuntime maxRequestLength="5120" />
>     </system.web>

<두번째 방법>

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

그런데 신기하게도 로컬에서 api 서버 돌리고 post 요청하면 큰 사이즈의 파일도 잘 넘어갑니다. web.config 말고 다른 곳 수정해야할 곳이 있을까요?

서버컴의 iis 는 10.0 버전입니다

api 소스 코드에서 컨트롤러에 post 요청 메소드는 아래와 같이 어트리뷰트를 추가해줘도 안되네여…

[RequestFormLimits(ValueLengthLimit = int.MaxValue, MultipartBodyLengthLimit = 5242880)]
[DisableRequestSizeLimit]
[Consumes(“multipart/form-data”)]
[HttpPost]
[Route(“retailers/{orgCode}/agree”)]
public async Task AgreeFileTransMulti(string orgCode)

1개의 좋아요

아마 설정 하신 세팅쪽의 requestLimits 부분은

클라이언트의 요청이 들어 왔을때 최초 응답을 하는 IIS 웹 서버 부분에 대한 설정 같습니다.

그래도 여전히 ‘RequestEntityTooLarge’ 오류가 나는 것은

asp.net core의 WAS 에서 요청 크기 제한이 걸려 오류가 나는 것 같습니다.

asp.net core 에서 limit 제한 설정을 변경해보세요.

services.Configure<IISServerOptions>(options =>
{
    options.MaxRequestBodySize = int.MaxValue;  // 요청 사이즈 limit 없음
});

참고로 IIS 웹 서버 호스팅이 아닌 Kestrel 로 호스팅 되는 셀프 호스팅 이라면

services.Configure<KestrelServerOptions>(options =>
{
    options.Limits.MaxRequestBodySize = int.MaxValue; // 요청 사이즈 limit 없음
});

이렇게 하시면 될 것 같구요 !

올려주신 컨트롤러 액션 이름이 파일 업로드(?) 부분인 것 같은데

Form으로 요청되는 Miltipart - Body 부분의 요청 사이즈 limit 설정은

services.Configure<FormOptions>(options =>
{
    options.ValueLengthLimit = int.MaxValue;
    options.MultipartBodyLengthLimit = int.MaxValue;
    options.MultipartHeadersLengthLimit = int.MaxValue;
});

이렇게 설정을 추가 해보세요.

참고로 해당 설정이 파이프라인 형태로 동작 되는 거라서
코드 위치가 순서에 맞게 되어야 합니다.

3개의 좋아요

<자문자답>

위 링크에 있는 내용으로 iis 에서 “구성 편집기” 부분에서 수정하니 되네요!!!

dddddd

3개의 좋아요

앗 답변 감사합니다!@!@!@! 위 방법으로도 해보겠습니다

1개의 좋아요

알려주신
services.Configure(options =>
{
options.MaxRequestBodySize = int.MaxValue; // 요청 사이즈 limit 없음
});

이 부분은 어디에 적용을 해야하는건가요!

1개의 좋아요

Startup.cs 이욤

1개의 좋아요

넵!

1개의 좋아요