要在wince上使用wcf,需要使用 Power Toys for .NET Compact Framework 3.5工具包。
安装后,在\Microsoft.NET\SDK\CompactFramework\v3.5\bin目录下,使用NetCFSvcUtil.exe,
生成访问WCF的代码,生成的代码有2个,其maxReceivedMessageSize默认值为65536。
如果需要传输更多的数据,需要在 public static System.ServiceModel.Channels.Binding CreateDefaultBinding()方法中,
修改返回值binding的maxReceivedMessageSize等属性的值即可。
大体代码如下:
public static System.ServiceModel.Channels.Binding CreateDefaultBinding()
{
System.ServiceModel.Channels.CustomBinding binding = new System.ServiceModel.Channels.CustomBinding();
binding.Elements.Add(new System.ServiceModel.Channels.TextMessageEncodingBindingElement(System.ServiceModel.Channels.MessageVersion.Soap11, System.Text.Encoding.UTF8));
//binding.Elements.Add(new System.ServiceModel.Channels.HttpTransportBindingElement());
System.ServiceModel.Channels.HttpTransportBindingElement htbe = new System.ServiceModel.Channels.HttpTransportBindingElement();
htbe.maxReceivedMessageSize = 2147483647;//此处修改为合适的值即可
...//同时修改其他属性。
binding.Elements.Add(htbe);
return binding;
}
网上搜了好久没找到,经过不断测试,终于解决此问题。