2016-09-16 7 views
0

WCF 서비스에서 wsDualHttpBinding 끝점을 사용할 수 없습니다. 클라이언트에서이 문제가 발생합니다.Wcf wsDualHttpBinding 최대 메시지 길이가 16384에 도달했습니다.

전체 XML 데이터를 읽을 수 있도록 MaxArrayLength를 16384로 늘리는 것이 좋습니다.

나는 다음과 같은 구성 시도 :

<system.serviceModel> 
    <bindings> 
     <wsDualHttpBinding> 
     <binding name="MyBinding" maxReceivedMessageSize="2147483647" /> 
     </wsDualHttpBinding> 
    </bindings> 

    <client> 
     <endpoint name="WSDualHttpBinding_IDataService" binding="wsDualHttpBinding" bindingConfiguration="MyBinding" 
     address="http://localhost:8733/DataProvider/" contract="DataStorageService.IDataService" > 
     <identity> 
      <dns value="localhost" /> 
     </identity> 
     </endpoint> 
    </client> 

을하지만 위의 구성은 무시 될 것으로 보인다.

var instanceContext = new InstanceContext(new CallbackHandler()); 
    _clientService = new DataServiceClient(instanceContext); 

와 나는 코드의이 라인의 app.config의 구성을 무시 어딘가에 읽을;

나는이처럼 내 클라이언트를 인스턴스화 그게 문제가되지 않는다면 어떻게 쿼타를 증가시킬 수 있습니까?

도움을 주시면 감사하겠습니다.

답변

1

당신은 정확하게 오류가이를 위해서는 :

를 알려줍니다 무엇을 그것을 수행하는 방법을 시각적으로 볼 것이 아니라 복사 및 붙여 넣기 코드하는 것이 가장 수 있습니다 않습니다.

프로젝트에서 "app.config"서비스를 마우스 오른쪽 버튼으로 클릭하고 "WCF 구성 편집"을 선택한 다음 "바인딩"을 클릭하면 사용자 정의 바인딩이 표시됩니다. 그냥 마우스 오른쪽 버튼으로 클릭하고 새 바인딩을 만듭니다. 이 작업이 완료되면 여기에서 그때 가서하고 "파일"그리고, "이 ReaderQuotas 속성이"내가 사용하는

MaxArrayLength = 2147483647 
MaxBytesPerRead = 4096 
MaxDepth = 32 
MaxNameTableCharCount = 2147483647 
MaxStringContentLength = 2147483647 

입니다 변경할 수 있습니다

이제 이동 "저장"당신의 app.config 코드를 보려면 업데이트해야합니다.

는 서비스를 실행 한 후 바로 서비스 참조를 클릭하고 "업데이트 서비스 참조"지금 당신은 당신의 클라이언트의 app.config보고는 서비스의 app.config 속성이 어떻게 생겼는지 일치해야합니다 파일 경우

. 그렇지 않은 경우 클라이언트 app.config를 마우스 오른쪽 단추로 클릭하고 "Edit WCF Configuration"을 다시 클릭하고 바인딩으로 이동 한 다음 서비스 끝점을 선택하고 값을 서비스와 동일하게 변경합니다.

설정 값이 높으면 ddos ​​공격 등에 취약 해 지므로 테스트 후에 필요한 것을 찾아 변경해야합니다.

희망이 도움이 :)

+0

이것은 서버 측에서 문제를 해결하는 절차와 같지 않습니까? 클라이언트 측에서 오류가 발생했습니다 – sam

+0

서버 측이 올바르게 설정되지 않았다면 클라이언트에게 전송하지 않을 것입니다. 클라이언트와 서버를 모두 설명 했으므로 비슷한 프로세스입니다. –

2

당신은 단지 maxReceivedMessageSize 이상을 구성해야 서비스가 관리자 권한으로 실행되고 있는지 확인합니다. 조나단 코 페이로 당신은 또한 readerQuotas 구성해야 BytePerRead, TableCharCount, StringContentLenght 등이 말했다 : https://msdn.microsoft.com/en-us/library/ms731325(v=vs.110).aspx

주 서버에게 당신의 클라이언트를 구성 동일한 방식으로 구성해야합니다, 당신은 할 수 분명히 당신의 maxreceivedmessagesize보다 큰 maxbytearraylenght를 설정하지 마십시오. 서버에 동일한 MaxReceivedMessageSize가 없으면 예상대로 작동하지 않습니다.

GL.