바보쿠우
#1
.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;
});
이렇게 설정을 추가 해보세요.
참고로 해당 설정이 파이프라인 형태로 동작 되는 거라서
코드 위치가 순서에 맞게 되어야 합니다.
2개의 좋아요
바보쿠우
#3
<자문자답>
위 링크에 있는 내용으로 iis 에서 “구성 편집기” 부분에서 수정하니 되네요!!!
3개의 좋아요
바보쿠우
#4
앗 답변 감사합니다!@!@!@! 위 방법으로도 해보겠습니다
1개의 좋아요
바보쿠우
#5
알려주신
services.Configure(options =>
{
options.MaxRequestBodySize = int.MaxValue; // 요청 사이즈 limit 없음
});
이 부분은 어디에 적용을 해야하는건가요!
1개의 좋아요