2012-01-06 3 views
2

저는 WCF를 처음 접했고 서비스가 취하는 구성의 미로를 둘러 보려고합니다. 기본 maxReceivedMessageSize보다 큰 테이블 내보내기를 반환 할 수있는 휴식 서비스가 있습니다. 그래서 나는이 서비스/끝점에 대한 설정을 가지고 놀려고 노력하고 있었고 아무데도 갈 수 없었습니다. 아래에 내가 일하고있는 것의 요지라면, 나는 무엇을 놓치고 있습니까? List를 JSON 또는 XML로 반환하기 때문에 기본 임계 값을 반환 할 수 있어야합니다.RESTful 서비스의 webHttpBinding에 대한 바인딩 및 구성?

<system.serviceModel> 
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> 

<services> 
    <!-- defin service --> 
    <service behaviorConfiguration="EPRestBehavior" name="EPRestDNS"> 
    <endpoint address="" 
       bindingConfiguration="ApiExportBinding" 
       binding="webHttpBinding" 
       contract="IDNSRestService" /> 
    </service> 
</services> 

<behaviors> 
    <serviceBehaviors> 
    <behavior name="EPRestBehavior"> 
     <serviceMetadata httpGetEnabled="true"/> 
     <serviceDebug includeExceptionDetailInFaults="true"/> 
    </behavior> 
    </serviceBehaviors> 

    ... 

</behaviors> 
<bindings> 
    <!-- Customizations for REST service --> 
    <webHttpBinding> 
    <binding name="ApiExportBinding" maxReceivedMessageSize="10485760" 
        maxBufferPoolSize="10485760" maxBufferSize="10485760" closeTimeout="00:03:00" 
        openTimeout="00:03:00" receiveTimeout="00:10:00" sendTimeout="00:03:00"> 
     <readerQuotas maxDepth="32" maxStringContentLength="10485760" 
         maxArrayLength="10485760" maxBytesPerRead="10485760" /> 
     <security mode="None" /> 
    </binding> 
    </webHttpBinding> 
</bindings> 

<standardEndpoints> 
    <webHttpEndpoint> 
    <standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true" /> 
    </webHttpEndpoint> 
</standardEndpoints> 

UPDATE 1 그 설정을 모두 제거하고 기존 webHttpEndpoint 섹션에 뭔가 선웃음 시도했다 : 같은 결과

<standardEndpoints> 
    <webHttpEndpoint> 
    <standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true" maxReceivedMessageSize="1000000000" /> 
    </webHttpEndpoint> 
</standardEndpoints> 

합니다. HTTP/1.1 502 Connection reset by peer

답변

3

이 모든 것이 WCF가 끔찍한 이유입니다. 결국 나는 서버에 svclog를 만들고 실제 문제는 기본 객체 그래프에서 한계에 도달했습니다. 나는 구현하고자하는 새로운 한계를 추가했다. 그런 바보 같은 일로 7 시간 이상.

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall, MaxItemsInObjectGraph = 2147483646)] 
2

예외는 서비스 또는 클라이언트 측에서 발생합니까? 일반적인 실수는 서버의 값을 변경하지만 클라이언트에서도 변경하는 것을 잊어 버리는 것입니다.

+0

좋은 점은 클라이언트 측입니다. Fiddler를 사용하면 502 연결 재설정 오류가 발생하지만 서버 나 디버깅 중에는 예외가 발생하지 않습니다. 그것은 클라이언트가 "이봐 요, 괜찮은 데이터 덩어리를 얻으 려하고, 잠깐 만져서 모든 것을 얻으 려합니다."라는 것을 알지 못하는 것 같습니다. – BryanGrimes

+0

그래서 예외가 발생하지 않습니까? – KMan

+0

아니요, 아무 것도 없습니다. Fiddler와 브라우저 모두에서 클라이언트 오류 만 있습니다. – BryanGrimes

관련 문제