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

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

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

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

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

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

감사



답변

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)는 예일뿐입니다. 정확한 값을 사용할 필요는 없습니다.


답변

필자의 경우 (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에서 작동했습니다. 🙂


답변

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


답변

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

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

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

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

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

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

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


답변

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


답변

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


답변

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