错误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);
<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>
Silverlight wcf 上传大数据
1.服务端:
MaxRequestLength: 请求的最大大小(以千字节为单位)。默认大小为 4096 KB (4 MB)。
< httpRuntime maxRequestLength ="2147483647" />
< compilation debug ="true" targetFramework ="4.0" />
</ system.web >
< 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"
</ binding >
</ basicHttpBinding >
</ bindings >
2.客户端
< security mode ="None" />
</ binding >