이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 20025|회답: 0

[ASP.NET] ASP.NET 매개변수 패스, 길이 제한, 사용 주의사항.

[링크 복사]
게시됨 2018. 3. 8. 오전 10:18:07 | | | |
1. 문제의 원인
프로젝트 출시 후 버그 통계의 첨부 파일 "Post-Release Problems"에는 다음과 같은 내용들이 있습니다:   



경험 축적으로서 이러한 문제, 원인 및 해결책은 체크리스트에 포함되며, 다음과 같습니다:
첫 번째 질문: URL 매개변수의 상한선이 정확한 참조인가? 상한선은 얼마인가요?
두 번째 질문: 왜 POST 시 데이터 한도가 있나요? 한도가 128K인가요?  
2. 문제 분석
1. 첫 번째 질문:
1) URL에는 매개변수의 상한선이 없습니다. 문제는 사실 IE가 URL에 길이 제한이 있다는 점입니다.
2) HTTP 프로토콜 명세는 URL의 길이를 제한하지 않습니다. 이 제한은 특정 브라우저와 서버에 의해 부과되는 제한입니다. IE의 URL 길이 제한은 2083바이트(2K+35)입니다. Netscape, FireFx 같은 다른 브라우저에는 이론적인 길이 제한이 없으며, 그 한계는 운영체제 지원 여부에 따라 달라집니다. [참고문헌 1]
3) "가변 길이 매개변수는 URL을 통해 전달된다"는 것은 양식 제출 시 GET 메서드를 사용한다는 의미이며, POST 메서드가 아닙니다. 이 잠재적 오류를 일으키는 원인은 GET 메서드를 사용해 양식 데이터를 제출하는 데 있습니다. GET 메서드가 URL에 있는 데이터를 서버로 전달하여 처리하기 때문입니다.
4) 이 제한은 매개변수 값 데이터 길이만이 아니라 전체 URL 길이임을 유의하세요.
5) URL 길이에 대한 IE의 한계이기 때문에, GET 메서드와 POST 메서드 모두 이 제한을 가집니다.
(FORM [Ref. 2]의 GET 및 POST 방법에 대한 자세한 내용은 관련 문서를 참조하시기 바랍니다)  
추천 사항:
1) 애플리케이션이 위치한 환경, 예를 들어 웹 애플리케이션의 브라우저 및 서버 환경을 이해하고, 그 특정 매개변수 제한을 이해합니다.
2) 복잡한 데이터를 제출할 때 가능한 한 POST 방법을 사용한다. 참고: FORM이 메서드 속성을 작성하지 않을 경우, 기본값은 GET 메서드를 사용하는 것입니다.
결론 (체크리스트에 작성):
GET 메서드를 사용해 데이터를 제출할 때는 IE 환경에서 URL 길이 제한인 2083바이트를 고려해야 합니다.
2. 두 번째:
1) 이론적으로 POST에는 크기 제한이 없습니다. HTTP 프로토콜 명세에는 크기 제한도 없습니다.
2) "POST 데이터 크기 제한이 128K"라는 표현은 정확하지 않으며, POST 데이터에 제한이 없고 서버 프로세서의 처리 능력이 제한 역할을 합니다.
3) ASP 프로그램의 경우, 요청 객체가 각 폼 필드를 처리할 때 10만 개의 데이터 길이 제한이 있습니다. 하지만 Request.BinaryRead에서는 그런 제한이 없습니다. 10만 개 이상의 도메인 데이터를 처리해야 하는 솔루션은 아래 [참고문헌 3]을 참고하시기 바랍니다.
4) 확장하여 IIS 6.0에서는 보안상의 이유로 제한을 강화했습니다 [참조 4]. 또한 다음과 같은 점에 주의를 기울여야 합니다:
   IIS 6.0은 기본적으로 최대 200 KB의 ASP POST 데이터를 허용하며, 각 폼 필드당 제한은 100 KB입니다.
    IIS 6.0 업로드 파일의 기본 크기는 4MB입니다.
    IIS 6.0은 기본적으로 최대 요청 헤더를 16KB로 설정합니다.
    이러한 제한 사항은 IIS 6.0 이전에는 제공되지 않았습니다.
추천 사항:
1) 러닝 환경의 기본 설정을 알면 발생하는 문제를 설계하고 빠르게 해결하는 데 도움이 됩니다.
2) 서버 버전을 고려해야 합니다. 각 IIS 버전마다 이 매개변수에 대한 기본 설정이 다르므로, 필요하다면 정보를 찾아 비교 테이블을 작성하세요. 이렇게 해서 개발과 테스트에 대한 참고 자료가 생깁니다.
3) 이러한 IIS 6.0의 제한은 사실 기본 설정일 뿐이며, 실제 애플리케이션 환경에서 수정할 수 있습니다.
    WINNT/system32/inetsrv/MetaBase.xml에서 기본 정의는 다음과 같습니다:
        AspBufferingLimit="4194304"는 업로드된 파일의 최대 크기에 해당합니다
        AspMaxRequestEntityAllowed="204800"은 POST의 최대 데이터 양에 해당합니다
        ...
결론 (체크리스트에 작성):
ASP를 사용할 때는 POST 폼의 일반 읽기 처리를 위해 필드당 100KB의 제한이 있다는 점을 고려해야 합니다. Request.Binary 사용을 고려해 보세요.





이전의:asp.net mvc는 폼 게시물을 HTML 제출을 허용하도록 설정합니다
다음:시스템.링크.다이내믹
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com