错误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>