錯誤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: 請求的最大大小(以KB為單位)。預設大小為 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>