문제

WCF 서비스 (IIS가 아닌 Windows 서비스에서 호스팅)를 호출하려고하고 다음과 같은 오류가 발생하고 있습니다.

수신 메시지의 최대 메시지 크기 할당량은 원격 채널에 대해 초과되었습니다. 자세한 내용은 서버 로그를 참조하십시오.

나는 MaxReceivedMessagesize와 ReaderQuotas를 행운없이 최대 값으로 늘리는 것을 시도했습니다.

또한 로깅을 켜고 "전송 된"Messsage 크기를 확인했습니다. 확실히 최대에 가까운 곳은 없습니다. 우리는 372KB XML로 직렬화 된 물체를 보내는 것에 대해 이야기하고 있습니다.

두 가지 질문 :

  1. 메시지가 언급하는 "서버 로그"가 무엇인지 아는 사람이 있습니까? EventViewer를 확인했지만 거기에는 아무것도 나타나지 않습니다 ...

  2. 다른 구성 설정이 여기에 적용되는 것을 아는 사람이 있습니까?

도움이 되었습니까?

해결책

귀하의 질문은 Shawn Wildermuth의 블로그 게시물을 상기시켜주었습니다. 아마도 이것은 당신을 도울 것입니다 :

http://wildermuth.com/2009/09/10/using_large_message_requests_in_silverlight_with_wcf

숀은 말한다 :

트릭은 더 큰 기본값을 사용하려면 Web.Config에서 사용자 정의 바인딩을 변경하는 것입니다. 합리적인 크기로 2MB를 선택했습니다. 물론 위에 표시된 것처럼 2GB로 설정하면 작동하지만 공격에 더 취약합니다. 가장 큰 요청보다 크지 않지만 지나치게 크지 않은 크기를 선택하십시오. 추측 게임입니다. 이것을 설정하려면 Web.config에 추가해야합니다.

다른 팁

서버 로그는 켜질 때 생성되는 추적 및 로깅 파일을 의미한다고 생각합니다. 여기에 있습니다 MSDN 링크.

내가 쓴 응용 프로그램에서 더 높은 값을 가져야하는 WCF와 함께 제공되는 속성은 MaxReceivedMessagesize, MaxStringContentLength, MaxArrayLength 및 MaxBuffersize입니다. 그것들을 늘리고 무슨 일이 일어나는지 확인하십시오. WCF는 예외를 삼키는 것을 좋아하기 때문에 디버깅하는 데 고통 스러울 수 있습니다.

다음과 같이 응용 프로그램 구성의 서버 로그 및 경로를 지정할 수 있습니다.

 <system.diagnostics>
    <trace autoflush="true" />
    <sources>
      <source name="System.ServiceModel"

                    switchValue="Critical, Error, Warning"
              >
        <listeners>
          <add name="traceListener"
                        type="System.Diagnostics.XmlWriterTraceListener"
                        initializeData="F:\log-data\ServiceTrace.svclog"
            />
        </listeners>
      </source>
    </sources>

  </system.diagnostics>

두가지:

  • 서버 및 클라이언트 측 구성 (관련 섹션 - 엔드 포인트, 바인딩 구성)을 보여줄 수 있습니까?

  • 양쪽 (클라이언트 및 서버)의 값을 변경 했습니까 ??

영향을 줄 수있는 많은 크기 설정이 있습니다 ....

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top