2012-09-19 5 views
8

HTTPS를 통해 메시지를 수락하는 자체 호스팅 WCF 서비스가 있습니다.HTTP 413 자체 호스팅 WCF 서비스에서 너무 큰 엔티티 요청

메시지가 응답을 수신하는 Java 응용 프로그램에서 전송되는 : 내가 파일을 업로드하려고 시도하고 있지 않다

HTTP/1.1 413 Request Entity Too Large 
Content-Length: 0 
Server: Microsoft-HTTPAPI/2.0 
Date: Wed, 19 Sep 2012 09:05:34 GMT 
Connection: close 

단지 78킬로바이트 인 XML/SOAP 메시지를 보낼 수 있습니다. 최대 메시지 및 버퍼 크기를 올리려고했지만 아무 소용이 없습니다.

<binding name="SecuredNoProxy" openTimeout="00:00:10" sendTimeout="00:00:10"> 
     <textMessageEncoding messageVersion="Soap11WSAddressing10" /> 
     <security includeTimestamp="true" enableUnsecuredResponse="true"> 
      <localClientSettings timestampValidityDuration="00:15:00" /> 
     </security> 
     <httpsTransport manualAddressing="false" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" allowCookies="false" bypassProxyOnLocal="true" decompressionEnabled="true" hostNameComparisonMode="StrongWildcard" keepAliveEnabled="true" realm="" transferMode="Buffered" unsafeConnectionNtlmAuthentication="false" useDefaultWebProxy="false" requireClientCertificate="true" /> 
    </binding> 

추가 정보를 제공 할 수 있는지 알려 주시기 바랍니다.

WCF 추적 로그

연결에 바이트 수신 '에 https : // localhost를'

활동의 경계 (시작)

연결 정보

예외를 던지기 (오류)

예외는 다음과 같습니다

System.ServiceModel.ProtocolException,는 system.serviceModel, 버전 = 4.0.0.0, 문화 = 내가 질문에 회피로

+0

활성화 [WCF 추적 (http://msdn.microsoft.com/en-us/library/ms733025 (V = VS.100) .aspx) 메시지가 WCF에 의해 처리되고 있는지 확인하십시오. 이 메시지는 WCF 배관이 아닌 HTTP 호스트 구성 요소에서 오는 것 같습니다. –

+0

@SixtoSaez - WCF 추적 로그 정보를 추가했습니다. – Fenton

답변

6

중립이 매우 관련이 바인딩 구성으로. 특히, maxReceivedMessageSize.

maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" 

이 (가 서비스 거부 공격에 잠재적으로 취약 떠나으로 아마하지만 일이 상당히이 큰 공개하고 싶지 않아) 변경할 수있는 올바른 영역입니다. 실제 메시지를 기반으로 합리적인 가치를 결정하십시오.

아웃 바운드 엔드 포인트

가 올바르게 구성되었지만 인바운드 엔드 포인트는 아니었다 - 그것이 :이 메시지가 전송되는 위해 충분하지 않습니다 65536의 기본값을 사용하여 의미했다

<httpsTransport requireClientCertificate="true" /> 

. 따라서 종단점을 실제로 신중하게 검사하는 경우가 있습니다. 특히 종단점을 비슷한 이름으로 지정하는 경우 더욱 그렇습니다. 나를 위해

+1

스티브 당신이 대답 한 이후로 꽤 오랜 시간이 걸렸으나 아웃 바운드 엔드 포인트와 인바운드 엔드 포인트가 무엇을 의미하는지 자세히 설명해 주시겠습니까? 감사. – antscode

+1

그것은 모든 연무입니다. 가벼운 REST 서비스에 대해 감사드립니다. 나는 잠시 동안 이런 종류의 것을 보지 않아도되었습니다. 그럼에도 불구하고 나는 "아웃 바운드"= "서비스"와 "인바운드"= "발신자"(나는 생각한다!)를 의미했다. – Fenton

2

그것은 system.web하에 maxRequestLength의이었다

<system.web> 
    <compilation debug="true" targetFramework="4.0" /> 
    <customErrors mode="Off"/> 
    <httpRuntime 
     maxRequestLength="2147483647" 
     executionTimeout="300" /> 
</system.web>