Silverlight3 + WCF + VS2008传输数据问题
这几天开发Silverlight应用遇到问题了,,大家多多帮忙。
Silverlight应用调用WCF服务获取数据,数据少的时候没有问题,但是数据量大了就会报错:
“已超过传入消息(65536)的最大消息大小配额。若要增加配额,请使用相应绑定元素上的 MaxReceivedMessageSize 属性”。
我是调用一个方法返回List<T>的形式,数据也能正常获取到WCF服务中,但是传到Silverlight应用时就提示上面的错误,有人说我配置文件有问题,修改了也是报同样的错误,修改后的配置文件如下,希望大家帮忙看看
Web.config
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="ServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
<dataContractSerializer maxItemsInObjectGraph="6553600" />
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_SAService"
closeTimeout="00:01:00"
openTimeout="00:01:00"
receiveTimeout="00:10:00"
sendTimeout="00:01:00" allowCookies="false"
bypassProxyOnLocal="false"
hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="2147483647"
maxReceivedMessageSize="2147483647"
maxBufferSize="2147483647"
messageEncoding="Text"
textEncoding="utf-8"
transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas
maxArrayLength="2147483647"
maxBytesPerRead="2147483647"
maxDepth="2147483647"
maxNameTableCharCount="2147483647"
maxStringContentLength="2147483647"/>
</binding>
</basicHttpBinding>
</bindings>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
<services>
<service behaviorConfiguration="ServiceBehavior" name="Service">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_SAService"
contract="Service" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
</system.serviceModel>
ServiceReferences.ClientConfig
<configuration>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_Service" maxBufferSize="2147483647"
maxReceivedMessageSize="2147483647">
<security mode="None" />
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:5709/CollegesEMSWeb/Service.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_Service"
contract="Service.Service" name="BasicHttpBinding_Service" />
</client>
</system.serviceModel>
</configuration>
两个配置文件相关的部分,,多谢大家!
[解决办法]
从配置文件看你使用的是Silverlight2,可参见如下代码:
Dim myClient As myServiceReference.mySilverlightWCFClient
Dim binding As New _
BasicHttpBinding( _
If(Application.Current.Host.Source.Scheme.Equals( _
"https", StringComparison.InvariantCultureIgnoreCase), _
BasicHttpSecurityMode.Transport, BasicHttpSecurityMode.None))
binding.MaxReceivedMessageSize = Integer.MaxValue binding.MaxBufferSize = Integer.MaxValue
myClient = New myServiceReference.mySilverlightWCFClient( _
binding, newEndpointAddress( _
New Uri(Application.Current.Host.Source, "../mySilverlightWCF.svc")))
详见《关于使用VS2008+Silverlight3+WCF+Linq部署项目问题体会》
[解决办法]
在客户端进行配置,
1. ServiceReferences.ClientConfig
<bindings> <basicHttpBinding> <binding name="BasicHttpBinding_IDataService" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"> <security mode="None" /> </binding> </basicHttpBinding> </bindings>