2010-03-16 2 views
14

Ich möchte die MaxReceivedMessageSize -Eigenschaft in meinem Client programmatisch auf eine höhere Grenze (aufgrund von (400) Bad Request Fehler) setzen. Dies ist der Code Ich verwende ...Wie programmiere ich die MaxReceivedMessageSize programmatisch bei Verwendung eines WCF-Clients?

WCFServiceTestClient wcfClient = 
    new WCFServiceTestClient(new wsHttpBinding(), strServiceURL); 

Mein Service url ist dynamisch und daher nicht die web.config verwenden können.

//The following code doesnt seem to take effect 
((WSHttpBinding)wcfClient.ChannelFactory.Endpoint.Binding) 
     .MaxReceivedMessageSize = 2147483647; 

Was mache ich falsch?
Jede Hilfe wird geschätzt.
Dank
Pratt

Antwort

20

Haben Sie Nachbestellung der Anrufe versucht so, dass Sie die MaxReceivedMessageSize einstellen, bevor Sie den Client instanziieren? zB

var binding = new wsHttpBinding(); 
binding.MaxReceivedMessageSize = Int32.MaxValue; 
var wcfClient = new WCFServiceTestClient(binding, strServiceURL); 

Dies kann oder kann nicht helfen, aber Ihre 400 Fehler.

8

hatte ich ähnliche Probleme in meinem WCF-Service, und ich löste es mit:

CustomBinding binding = (CustomBinding)PDAServiceContractClient.CreateDefaultBinding(); 
      HttpTransportBindingElement httpBindingElement = new HttpTransportBindingElement(); 
      httpBindingElement.MaxBufferSize = Int32.MaxValue; 
      httpBindingElement.MaxReceivedMessageSize = Int32.MaxValue; 
      binding.Elements.Add(httpBindingElement); 

      string address = PDAServiceContractClient.EndpointAddress.Uri.ToString(); 
      m_proxy = new PDAServiceContractClient(binding, new EndpointAddress(address)); 
0

gut das funktioniert, obwohl es nicht so offensichtlich. Es behält alle vorhandenen Bindungseigenschaften bei und passt nur die MaxReceivedMessageSize an (die übrigens auch MaxBufferSize auf die gleiche Größe erhöht).

Dim oClient as WcfClient = New WcfClient 
CType(oClient.Endpoint.Binding, ServiceModel.BasicHttpBinding).MaxReceivedMessageSize = Int32.MaxValue 
Verwandte Themen