길이가 긴 요청을 허용하도록 web.config를 구성하는 방법


138

textarea 요소의 값에서 파일 클라이언트 측을 만들고 싶은 사이트를 만들고 있습니다.

이 작업을 수행하는 코드가 있지만이 오류가 발생합니다.

HTTP 오류 404.15-찾을 수 없음 요청 필터링 모듈이 쿼리 문자열이 너무 긴 요청을 거부하도록 구성되었습니다.

어떤 크기의 요청도 처리 할 수 ​​있도록이를 재정의하는 방법이 있습니까?

그렇지 않은 경우, 파일 시스템 / active x 객체를 사용하지 않고 파일을 클라이언트 쪽에서 생성 할 수 있습니까?

감사


8
IIS 또는 응용 프로그램에 대해 쿼리 문자열 길이를 구성 할 수 있지만 URL 길이에 대한 HTTP 표준이 있습니다. 쿼리 문자열을 사용하므로 URL의 일부로 값을 전달합니다. 최대 URL 문자 길이는 2000 자입니다. 값이 긴 문자열이면 쿼리 문자열에 값을 전달하지 않고 POST하는 것이 가장 좋습니다.
Jeff LaFay

2
Jlafay에 동의하십시오. 2-3 개 이상의 간단한 매개 변수가있는 경우 값을 POST하는 것이 가장 좋습니다. 쿼리 문자열을 사용할 때는 반드시 암호화하십시오.
Jack

답변:


243

web.config에 다음을 추가하십시오.

<system.webServer>
  <security>
    <requestFiltering>
      <requestLimits maxQueryString="32768"/>
    </requestFiltering>
  </security>
</system.webServer>

보다:

http://www.iis.net/ConfigReference/system.webServer/security/requestFiltering/requestLimits

의견을 반영하여 업데이트되었습니다.

requestFiltering의 requestLimits 요소 [IIS 설정 스키마]

web.config에 다음을 추가해야 할 수도 있습니다.

<system.web>
    <httpRuntime maxQueryStringLength="32768" maxUrlLength="65536"/>
</system.web>

참조 : httpRuntime 요소 (ASP.NET 설정 스키마)

물론 위의 구성 설정에서 숫자 (32768 및 65536)는 예일뿐입니다. 정확한 값을 사용할 필요는 없습니다.


24
그것만으로는 충분하지 않았습니다. 또한 이것을 system.web 섹션에 추가해야했습니다 : <httpRuntime maxQueryStringLength = "8192"/>
Rob Sedgwick

2
nnn은 허용하려는 최대 문자열 길이입니다 (예 : 32768
Matt Varblow 17.37의

작동하지
않습니다이

system.webServer 아래에 보안 노드를 설정 한 다음 httpRuntime 노드에 속성을 제거하고 추가하여 각각을 개별적으로 시도했습니다. 나는 분명히 일하기 위해 둘 다 필요했습니다. 많은 감사합니다!
David Gunderson

2
참고 : <httpRuntime> 태그는 <system.web> 아래에 있습니다 . <system.web> <httpRuntime maxQueryStringLength = "32768"maxUrlLength = "65536"/> </ system.web>
LePatay

33

필자의 경우 (Visual Studio 2012 / IIS Express / ASP.NET MVC 4 app / .Net Framework 4.5) 30 분의 시행 착오 후에 실제로 작동 한 maxQueryStringLength것은 <httpRuntime>태그 에서 속성을 설정하는 것이 었습니다 .

<httpRuntime targetFramework="4.5" maxQueryStringLength="10240" enable="true" />

maxQueryStringLength기본값은 2048입니다.

여기에 대한 자세한 내용 :

허용 가능한 URL 범위 확장


@MattVarblow가 제안한 <system.webServer>대로 설정을 시도했지만 작동하지 않았습니다 ... 이것은 Windows 8이 설치된 dev 컴퓨터에서 IIS Express (IIS 8 기반)를 사용하고 있기 때문입니다.

내 응용 프로그램을 프로덕션 환경 (IIS 7이 설치된 Windows Server 2008 R2)에 배포 할 때 IE 10은 긴 쿼리 문자열이있는 AJAX 요청에서 404 오류를 반환하기 시작했습니다. 그런 다음 문제가 쿼리 문자열과 관련이 있다고 생각하고 @MattVarblow의 답변을 시도했습니다. 방금 IIS 7에서 작동했습니다. :)


2
나를 위해 그것은 마법을
일으킨

6

확인해야 할 사항 : 사이트에서 MVC를 사용하는 경우 로그인 컨트롤러 클래스에 [Authorize]를 추가 한 경우 발생할 수 있습니다. 인증되지 않아서 로그인 방법-> 붐으로 리디렉션되므로 로그인 방법에 액세스 할 수 없습니다.


감사! 메뉴 / 탐색을 부분보기 및 익명 연결을 허용하지 않는 다른 컨트롤러로 옮겼 기 때문에이 문제가 발생했습니다.
Westerlund.io

오류 메시지는 사실이지만 실제 문제와 관련이없는 다른 경우입니다.
스티브 스미스

1
또한 Windows 인증이 "사용 가능"이고 익명 인증이 사용 불가능할 수 있으므로 프로젝트 속성을 확인하십시오. Pls는이 상세한 기사를 체크 아웃 - 오류 (스튜디오 2013 비주얼, MVC5) : 쿼리 문자열이 너무 긴 경우 요청 필터링 모듈은 요청을 거부하도록 구성되어 있습니다
fujiFX

5

IIS 8.5 웹 서버를 실행할 때이 문제가 발생하면 다음 방법을 사용할 수 있습니다.

먼저, 작업중인 IIS 사이트에서 "요청 필터링" 모듈을 찾은 다음 두 번 클릭하십시오.

여기에 이미지 설명을 입력하십시오

그런 다음 아래 표시된 흰색 영역을 마우스 오른쪽 버튼으로 클릭하고 "기능 설정 편집" 이라는 상황에 맞는 메뉴 옵션을 클릭해야합니다 .

여기에 이미지 설명을 입력하십시오

마지막으로해야 할 일은 "Maximum query string (Bytes)" 값을 2048 에서 필요에 따라 5000 과 같은보다 적절한 것으로 변경하는 것입니다.

여기에 이미지 설명을 입력하십시오


감사합니다. 이것은 저에게 가장 간단하고 효과적인 솔루션입니다
Afif Zafri

고마워 친구 !!!!!
Noobie

0

비슷한 문제가 IIS 8에 ASP 웹 응용 프로그램을 배포하려고 시도했지만 문제를 해결하기 위해 Matt과 Leniel이 위에서 제안한 것처럼 수행했습니다. 또한 익명 인증을 사용하려면 내 사이트의 인증 설정을 구성해야했습니다. 그리고 그것은 나를 위해 일했습니다.


0

사용자가 아직 인증되지 않았기 때문에 로그인 페이지의 ActionResult 함수에 [AllowAnonymous]를 추가해야했습니다.


0

웹 사이트에서 인증을 사용하고 있지만 IIS에 올바른 인증 방법을 설정하지 않은 경우 (예 : 기본, 양식 등) 브라우저가 리디렉션 루프에 빠질 수 있습니다. 이로 인해 리디렉션 URL이 폭발 할 때까지 길고 길어집니다.


0

또한 ajax 호출 매개 변수에 큰 문자열을 전달하면 오류가 발생합니다.

항상 ajax에서 type post를 사용하면 문제가 100 % 해결됩니다. 되고 web.config에서 길이를 설정할 필요가 없습니다.

// var UserId = 1000 개의 사용자 ID 배열

$ .ajax ({global : false, url : SitePath + "/ User / getAussizzMembersData", "data": {UserIds : UserId}, "type": "POST", "dataType": "JSON"}}


-1

HTTP 오류 404.15-찾을 수 없음 요청 필터링 모듈이 쿼리 문자열이 너무 긴 요청을 거부하도록 구성되었습니다.

이 문제를 해결하려면 소스 코드에서 Form태그에 속성이 있는지 확인하십시오method 이 get / set 상태 .

그렇다면 method속성을 제거해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.