2010-02-15 2 views
8

조치 당 maxAllowedContentLength 값을 어떻게 설정합니까?조치 당 MaxAllowedContentLength/maxRequestLength 값 설정

파일을 업로드하는 데 사용되는 몇 가지 작업이 있습니다. 각 작업마다 다른 maxAllowedContentLength 값이 필요합니다.

IIS 수준에서이 요청을 필터링하려는 것처럼 작업 필터를 사용하고 싶지 않습니다. 반면, 액션 필터는 이후에 이 오기 때문에 코딩 관점에서 볼 때 최상의 솔루션입니다. 따라서 경로가 변경되어 작업이 계속됩니다.

IIS6에서 <location> 태그를 사용하여 특정 위치에 maxRequestLength을 지정할 수 있음을 알고 있습니다. IIS7에서이 방법을 사용하는 방법을 모르겠습니다. url 경로가 web.config에 직접 코딩되어 있으므로이 방법이 마음에 들지 않습니다.

이 문제를 해결하는 가장 좋은 해결책은 무엇입니까?

+1

ASP.NET MVC로 파일 업로드 페이지를 프로그래밍 할 때 매우 중요한 주제입니다. –

답변

1

나는 그것을 성취 할 수있는 방법을 찾지 못했고, 나는 거기 있다고 생각하지 않습니다. 아마도 가장 좋은 방법은 사용자 지정 web.config를 사용하여 파일 다운로드 작업을 위해 다른 IIS 웹 사이트를 사용하는 것입니다.

+0

방법이 있어야합니다 :) 대부분의 경우, 리플렉션을 사용하고 .net 런타임을 해킹하여 구성을 수정할 수 있어야합니다. 쉬운 일은 아니지만 작동해야합니까? (예전에는 응용 프로그램간에 인증 키를 동기화하기 위해 비슷한 작업을 수행했습니다.) – Onkelborg

+0

@Onkelborg가 이에 대한 자세한 대답을 원합니다. 나는 대답으로 그것을 받아 들일 수있을 것이다. –

+0

나는 ILSpy의 도움으로 프레임 워크를 파고 약간 파고 들었다. 가장 쉬운 방법은 web.config를 다시 작성한 다음 응용 프로그램이 한 번 다시 시작된다는 것입니다. 그러나 런타임시 메모리 내에서 다시 쓸 수있는 것처럼 보이지만 상당히 까다 롭습니다. 위치마다 다른 maxAllowedContentLength를 가질 수 있다고 생각하지 않지만 위치마다 다른 maxRequestLength를 가질 수 있습니다. – Onkelborg

0

다른 필터링을 적용하려는 영역에 대해 별도의 가상 사이트를 만듭니다.

그런 다음 IIS 서버에서이 명령을 실행하십시오. ([IISWebsitename] 대체)

C:\Windows\System32\inetsrv>appcmd set config "[IISWebsitename]" -section:requestFiltering -requestLimits.maxAllowedContentLength:100000000 -commitpath:apphost 

이렇게하면 해당 웹 사이트에 대해 한 번에 100,000,000 바이트의 업로드 데이터를 사용할 수 있습니다.

+1

나는 커맨드 라인을 사용하는 것을 좋아하지 않는다. 그러나 이미 다른 사이트를 사용하고 있다면 Web.config를 사용하여 maxAllowedContentLength를 설정할 수 있습니다. –