首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > CAD教程 >

Silverlight3 + WCF + VS2008传输数据有关问题

2012-02-24 
Silverlight3 + WCF + VS2008传输数据问题这几天开发Silverlight应用遇到问题了,,大家多多帮忙。Silverligh

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

XML code
        <bindings>            <basicHttpBinding>                <binding name="BasicHttpBinding_IDataService" maxBufferSize="2147483647"                    maxReceivedMessageSize="2147483647">                    <security mode="None" />                </binding>            </basicHttpBinding>        </bindings> 

热点排行