2011-08-02 4 views
-1

The maximum message size quota for incoming messages (65536) has been exceeded. To increase the quota, use the MaxReceivedMessageSize property on the appropriate binding element.오류 : 수신 메시지의 최대 메시지 크기 할당량

프록시에 값을 언급했습니다. 서버 측 WCF Web.Config에서 언급해야합니까? 그렇다면 어떻게 알 수 있습니까?

내 WCF Web.Config가 아래에 언급되어 있습니다.

<binding name="NewBinding0" closeTimeout="00:10:00" openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" maxReceivedMessageSize="20000000">     
    <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> 
    <reliableSession enabled="true" /> 
    <security mode="None"> 
     <transport clientCredentialType="None" /> 
     <message clientCredentialType="Windows" negotiateServiceCredential="true" establishSecurityContext="false" /> 
    </security> 
    </binding> 

내 클라이언트 측 코딩.

WSHttpBinding binding = new WSHttpBinding(); 
//binding.ReaderQuotas.MaxArrayLength = 10485760; 
//binding.MaxReceivedMessageSize = 10485760; 
binding.Security.Mode = SecurityMode.None; 
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None; 
binding.Security.Message.ClientCredentialType = MessageCredentialType.Windows; 
binding.Security.Message.EstablishSecurityContext = false; 
//binding.Security.Message.NegotiateServiceCredential = true; 
binding.ReliableSession.Enabled = true; 
binding.ReaderQuotas.MaxArrayLength = 2147483647; 
binding.ReaderQuotas.MaxDepth = 2147483647; 
binding.ReaderQuotas.MaxNameTableCharCount = 2147483647; 
binding.ReaderQuotas.MaxBytesPerRead = 2147483647; 
binding.MaxReceivedMessageSize = 20000000; 
binding.ReaderQuotas.MaxStringContentLength = 2147483647; 
binding.SendTimeout = TimeSpan.FromMinutes(10); 
binding.CloseTimeout = TimeSpan.FromMinutes(10); 
binding.OpenTimeout = TimeSpan.FromMinutes(10); 
binding.ReceiveTimeout = TimeSpan.FromMinutes(10); 
//EndpointIdentity.CreateUpnIdentity("[email protected]"); 
ChannelFactory<IDBSyncContract> factory = new ChannelFactory<IDBSyncContract>(binding, new EndpointAddress(endPointURL)); 
dbProxy = factory.CreateChannel(); 
this.dbProxy = dbProxy as IDBSyncContract; 
+0

는이 스레드 http://stackoverflow.com/questions/884235/wcf-how-to-increase-message-size-quota – Aravind

+0

내 서버 쪽을 참조 않았다 단순히 binding 요소에 maxReceivedMessageSize 속성을 설정 Web.Config <보안 모드 = "없음"> <메시지 clientCredentialType = "윈도우"negotiateServiceCredential = "true"를 establishSecurityContext = "거짓"/> 나는에 대한 정확한 위치한다 side.What 서버의 속성 maxReceivedMessageSize을 언급하는 방법으로 혼란 스러워요

+0

속성. –

답변

0

클라이언트가 서버로 메시지를 보낼 때 오류가 발생합니까? 이 경우, 서버의 설정에서 엔드 포인트가이 만든 바인딩이 참조하는 파일에 있는지 확인하십시오 :

<endpoint address="" binding="wsHttpBinding" 
bindingConfiguration="NewBinding0" contract="IDBSyncContract" /> 

끝점 요소의 bindingConfiguration 속성을 통해 당신이 이름을 만든 바인딩 "NewBinding0"를 참조하지 않는 경우, MaxReceivedMessageSize의 경우 서버 측 설정에 MaxReceivedMessageSize 값을 설정 65536

UPDATE

이다는 클라이언트 설정에 정확히 같은 인 - WCF는 WsHttpBinding과의 기본값을 사용합니다.

<wsHttpBinding> 
    <binding name="NewBinding0" closeTimeout="00:10:00" openTimeout="00:10:00" sendTimeout="00:10:00" receiveTimeout="00:10:00" maxReceivedMessageSize="20000000"> 
    <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> 
    <reliableSession enabled="true" /> 
    <security mode="None"> 
     <transport clientCredentialType="None" /> 
     <message clientCredentialType="Windows" negotiateServiceCredential="true" establishSecurityContext="false" /> 
    </security> 
    </binding> 
</wsHttpBinding> 
+0

감사합니다 Tim,하지만 객체를 생성하는 동안 가치를 언급했습니다. 나는 서버 측에서 속성에 대해 언급 할 곳이 거의 없습니다. readerQuotas 및 Binding에 대해서는 언급했지만 아무 소용이 없습니다. –

+0

또한 다음은 서버 구성 파일에 대한 자세한 내용입니다.

+0

클라이언트가 사용하는 주소가 서버의 구성 파일에 정의되어 있습니까? 그렇지 않은 경우, 클라이언트로부터의 요청이 기본 WsHttpBinding을 사용하는 기본 엔드 포인트로가는 것인지 궁금합니다. 이로 인해이 문제점이 발생할 수 있습니다. – Tim

관련 문제