bestsource

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

bestsource 2023. 10. 21. 10:36
반응형

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

텍스트 영역 요소의 값으로 파일 클라이언트 쪽을 만들고 싶은 사이트를 만들고 있습니다.

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

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

제가 어떤 크기의 요청도 처리할 수 있도록 이것을 무시할 수 있는 방법이 있을까요?

그렇지 않다면 filesystem/active x 객체를 사용하지 않고 file client측을 생성할 수 있는 방법이 있습니까?

감사해요.

web.config에 다음을 추가합니다.

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

참조:

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

주석을 반영하도록 업데이트되었습니다.

requestLimitsElement for requestFiltering [IIS 설정 스키마]

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

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

참조: http Runtime Element(ASP).NET 설정 스키마)

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

내 경우 (Visual Studio 2012 / IIS Express / ASP)NET MVC 4 앱 / .Net Framework 4.5) 30분간의 시행착오 끝에 실제로 작동한 것은maxQueryStringLength에 있는 재산<httpRuntime>태그:

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

maxQueryStringLength기본값:2048.

자세한 내용은 다음과 같습니다.

허용 가능한 URL 범위 확대


제가 설치를 해봤습니다.<system.webServer>@MattVarblow가 암시하듯이, 하지만 효과가 없었습니다.그리고 이것은 제가 Windows 8이 있는 개발 컴퓨터에서 IIS Express(IIS 8 기반)를 사용하고 있기 때문입니다.

운영 환경에 앱을 배포했을 때(Windows Server 2008 R2 with IIS 7), IE 10은 쿼리 문자열이 긴 AJAX 요청에서 404개의 오류를 반환하기 시작했습니다.그러면 문제가 쿼리 문자열과 관련이 있다고 생각하고 @MattVarblow의 답변을 시도했습니다.방금 IIS 7에서 작동했습니다. :)

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

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

enter image description here

그런 다음 아래에 표시된 흰색 영역에서 마우스 오른쪽 버튼을 누른 다음 "Edit Feature Settings"(기능 설정 편집)라는 컨텍스트 메뉴 옵션을 클릭해야 합니다.

enter image description here

그런 다음에는 "최대 쿼리 문자열(Bytes)" 값을 2048년에서 5000과 같은 더 적합한 값으로 변경하는 것이 마지막입니다.

enter image description here

확인할 사항: 사이트에서 MVC를 사용하는 경우 로그인 컨트롤러 클래스에 [Authorize]를 추가하면 이 문제가 발생할 수 있습니다.인증되지 않아 로그인 방법에 접근할 수 없어 로그인 방법 --> boom으로 리디렉션됩니다.

또한 ajax call 매개변수에서 큰 문자열을 전달할 때 오류가 발생합니다.

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

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

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

ASP 웹 응용 프로그램을 IIS 8에 배포하는 데 비슷한 문제가 있었습니다. 이를 해결하기 위해 Matt와 Leniel이 위에서 제안한 대로 했습니다.또한 익명 인증을 활성화하기 위해 내 사이트의 인증 설정을 구성해야 했습니다.그리고 그것은 나에게 효과가 있었습니다.

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

웹 사이트에서 인증을 사용하고 있지만 IIS에 올바른 인증 방법(예: 기본, 양식 등)이 설정되어 있지 않은 경우그러면 브라우저가 리디렉션 루프에 갇히게 됩니다.그러면 리디렉션 URL이 폭발할 때까지 점점 더 길어집니다.

Visual Studio에서 앱을 실행하는 동안 IIS Express를 사용하는 동안 이 문제가 발생한 사람의 경우, 먼저 응용 프로그램에서 사용 중인 applicationhost.config 파일을 찾아야 합니다.applicationhost.config 파일을 찾는 방법에 대해서는 https://stackoverflow.com/a/41553876/1849880 에서 답변을 참조하십시오.그러면 위에서 설명한 대로 maxQueryString 값을 변경할 수 있습니다.

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

이 문제를 해결하려면 소스 코드에서Form태그에 속성이 있습니다.methodget/set state입니다.

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

언급URL : https://stackoverflow.com/questions/11636386/how-to-configure-the-web-config-to-allow-requests-of-any-length

반응형