2015-02-11 16 views
6

Desidero impostare maxReceivedMessageSize in App.config del client WCF.WCF maxReceivedMessageSize non impostato su 4215

Se maxReceivedMessageSize è uguale o minore di 4215, funziona correttamente. Sebbene quando si imposta su 4216 o qualsiasi valore sopra di esso, viene preso il valore predefinito di 65536.

enter image description here

enter image description here

mio Codice Cliente

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <startup> 
     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 
    </startup> 
    <system.serviceModel> 
     <bindings> 
      <basicHttpBinding> 
       <binding name="BasicHttpBinding_IConexaApiServic" maxReceivedMessageSize="4216" /> 
      </basicHttpBinding> 
     </bindings> 
     <client> 
      <endpoint address="http://svsr02.conexa.local/HelloService/ConexaApiService.svc" 
       binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IConexaApiServic" 
       contract="ConexaApiService.IConexaApiService" name="BasicHttpBinding_IConexaApiService" /> 
     </client> 
    </system.serviceModel> 
</configuration> 

e al codice Server relavant

<basicHttpBinding> 
     <binding name="BasicHttpEndpoint_MPSAPIServic" maxReceivedMessageSize="2000000"> 
      <security mode="TransportWithMessageCredential" /> 
     </binding> 
     <binding name="BasicHttpEndpoint_HelloService" receiveTimeout="00:10:00" sendTimeout="00:10:00" maxReceivedMessageSize="2000000"> 

    </binding> 
    </basicHttpBinding> 

<service name="IIS_test123.HelloService"> 
     <endpoint address="ConexaApi" binding="basicHttpBinding" bindingConfiguration="BasicHttpEndpoint_HelloService" contract="IIS_test123.IHelloService"></endpoint> 
     <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
     <host> 
      <baseAddresses> 
      <add baseAddress="http://localhost:8733/API/ConexaApiService" /> 
      </baseAddresses> 
     </host> 
     </service> 
    </services> 

Qualsiasi idea di come risolvere questo problema?

+0

Hai controllato le impostazioni di Gestione IIS se stai utilizzando un IIS? – user3021830

+1

Perché dici che "funziona bene" con un valore di 4215 mentre il tuo primo screenshot mostra un'eccezione? –

+1

@PatriceGahide Significa che l'impostazione del valore funziona. Come puoi vedere nella prima schermata, il valore menzionato nel testo delle eccezioni è 4215, mentre nel secondo è 65536. – cremor

risposta

1

Questo può essere spiegato. Se si osservano le eccezioni:

  • System.ServiceModel.CommunicationException è un'eccezione generata dal lato client. Ha il maxReceivedMessageSize dal lato client. Va tutto bene.
  • FaultException: questa eccezione è un errore SOAP che diffonde le eccezioni dal servizio all'applicazione client. (http://www.codeproject.com/Articles/799258/WCF-Exception-FaultException-FaultContract). Quindi questa eccezione proviene effettivamente dal lato del servizio! MaxReceivedMessageSize è il valore predefinito e non corrisponde a maxReceivedMessageSize nella configurazione del server. L'indirizzo a cui ci si connette nel client è l'indirizzo di servizio, non configurato maxReceivedMessageSize, e non l'indirizzo endpoint ConexaApi che viene configurato con maxReceivedMessageSize = "2000000". Ecco perché stai ottenendo il valore predefinito 65536.

E 4215 deve essere la dimensione del messaggio se si considera che l'eccezione non aumenta se si aumenta.

Problemi correlati