Silverlight 调用WCF常见错误

 

错误1 

错误描述:The remote server returned an error: NotFound

可能原因:WCF服务本身对数据包进行了限制,最大不能超过65535,Silverlight发送大数据包到服务器端(例如图片直接存于数据库),   WCF返回以上错误。

传输时,最好用List<string> 代替 string做参数。

解决方法:

(1)修改Silverlight端ServiceReferences.ClientConfig文件,增加Buffer 尺寸。
  <bindings> 
      
<basicHttpBinding> 
                
<binding name="BasicHttpBinding_IDataService" 
                         maxBufferSize
="2147483647" 
                         maxReceivedMessageSize
="2147483647"> 
                    
<security mode="None" /> 
                
</binding> 
       
</basicHttpBinding> 
</bindings>

 

         System.ServiceModel.BasicHttpBinding binding = new System.ServiceModel.BasicHttpBinding(System.ServiceModel.BasicHttpSecurityMode.None);
            binding.MaxReceivedMessageSize = int.MaxValue;
            binding.MaxBufferSize = int.MaxValue;
            binding.ReceiveTimeout = TimeSpan.FromMinutes(5);
            binding.SendTimeout = TimeSpan.FromMinutes(5);
            binding.CloseTimeout = TimeSpan.FromMinutes(5);
            binding.OpenTimeout = TimeSpan.FromMinutes(5);
            EndpointAddress ep = new EndpointAddress("../DataService.svc");
            MyTest.DataService.DataServiceClient client = new DataServiceClient(binding,ep);

(2)修改服务器端,在Web.config中添加自定义BasicHttpBinding对象,
 
 服务器端:web.config
<configuration>
  <appSettings>
    <add key="ReturnTablePath" value="C:\TestData\test_data.csv"/>
  </appSettings>
    <system.web>
      <httpRuntime maxRequestLength="2147483647"/>
      <compilation debug="true" targetFramework="4.0" />
    </system.web>

  <system.serviceModel>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
    <behaviors>
      <serviceBehaviors>
        <behavior name="MappingDataEditor.Web.DataServiceBehavior">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
          <dataContractSerializer maxItemsInObjectGraph="2147483647" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <services>
      <service behaviorConfiguration="MappingDataEditor.Web.DataServiceBehavior" name="MappingDataEditor.Web.DataService">
        <!--name=命名空间(ExcelServer)+类名(Server1)-->
        <endpoint address="" bindingConfiguration="LargeBuffer" binding="basicHttpBinding" contract="MappingDataEditor.Web.IDataService"/>
        <!--contract=命名空间(ExcelServer)+接口(IServer1)-->
      </service>
    </services>
    <bindings>
      <basicHttpBinding>
        <binding name="LargeBuffer" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
          <!--name=随意命名-->
          <readerQuotas maxStringContentLength="2147483647" maxArrayLength="2147483647"/>
          <security mode="None"></security>
        </binding>
      </basicHttpBinding>
    </bindings>
  </system.serviceModel>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>
</configuration>


错误2

 

Silverlight wcf 上传大数据

 

1.服务端:

 MaxRequestLength:  请求的最大大小(以千字节为单位)。默认大小为 4096 KB (4 MB)。

< system.web >
   < httpRuntime  maxRequestLength ="2147483647" />
   < compilation  debug ="true"  targetFramework ="4.0"   />
  </ system.web >

 

 

复制代码
< system.serviceModel >
         < bindings >
             < basicHttpBinding >
                 < binding  name ="NewBinding2MB"  maxReceivedMessageSize ="2147483647"
                         maxBufferSize
="2147483647"   maxBufferPoolSize ="2147483647"
                         closeTimeout
="10:00:00"  openTimeout ="10:00:00"  receiveTimeout ="10:00:00"
                         sendTimeout
="10:00:00"   >
                     < readerQuotas  maxArrayLength ="2147483647"  maxStringContentLength ="2147483647"
                                  maxBytesPerRead
="2147483647"  maxDepth ="2147483647"       
                                  maxNameTableCharCount ="2147483647"   />
                </ binding >
             </ basicHttpBinding >
         </ bindings >
复制代码

 

 

2.客户端

         < binding  name =" "  maxBufferSize ="2147483647"  maxReceivedMessageSize ="2147483647" >
                     < security  mode ="None"   />
                 </ binding >

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值