Windows Vista Beta | WinVistaBeta.com - Message | Too large WCF response (Compact framework)

July 05, 2008  
Subject: Too large WCF response (Compact framework)
Group: microsoft.public.windows.developer.winfx.indigo
Date: 3/5/2008 8:50:25 AM
From: "Philippe Requil�" [Email Address Protection]

Hi,

One service function returns a dataset as a large xml string (> 45 KB).
When I call the WCF function from a winforms app, I can receive the string.
But first I had to change the app.config:
<binding name="BasicHttpBinding_IOPSSvc"
maxBufferSize="2048000"
maxReceivedMessageSize="2048000">
<readerQuotas maxDepth="32"
maxStringContentLength="2048000" maxArrayLength="16384"

When I call the same WCF function from a smart device app, I get an error
when the string is larger than 45 KB.
Unfortunately WCF for compact framework doesn't suport config-files.
And programmatically the params aren't supported either:
basicHttpBinding.MaxReceivedMessageSize and basicHttpBinding.ReaderQuotas
aren't supported in compact framework,

Who can help?



Back
Subject: Re: Too large WCF response (Compact framework)
Group: microsoft.public.windows.developer.winfx.indigo
Date: 3/6/2008 2:42:52 AM
From: "Philippe Requil�" [Email Address Protection]

This was the error:
"The maximum size quota for incoming messages (65536) has been exceeded"

Solution :
increase MaxReceivedMessageSize (default=65536):

endpointAddress = new EndpointAddress("http://xxx/yyy/Svc.svc");
System.ServiceModel.Channels.CustomBinding binding = new
System.ServiceModel.Channels.CustomBinding();
System.ServiceModel.Channels.TextMessageEncodingBindingElement
textMessageEncodingBindingElement
= new
System.ServiceModel.Channels.TextMessageEncodingBindingElement(System.ServiceModel.Channels.MessageVersion.Soap11,
System.Text.Encoding.UTF8);
binding.Elements.Add(textMessageEncodingBindingElement);

System.ServiceModel.Channels.HttpTransportBindingElement
httpBindingEl
= new
System.ServiceModel.Channels.HttpTransportBindingElement();
httpBindingEl.MaxReceivedMessageSize = 65536 * 10;
binding.Elements.Add(httpBindingEl);

svcClientInstance = new OPSSvcClient(binding, endpointAddress);



Back