0

我正在使用 Visual Studio 2010 和 SQL Server 2008 R2。我创建了一个项目来*.sdf使用 WCF 服务将 SQL Server CE ( ) 文件同步到 SQL Server。

当我有小型 SQL Server CE 文件 (18 MB) 时它工作正常,但是当我尝试使用大型 SQL Server CE 文件 (38 MB) 进行同步时,会发生错误。

web.config我在 WCF 服务和app.config我的应用程序中增加了许多参数的大小。

但是错误不断发生......

基础连接已关闭:连接意外关闭。

堆栈跟踪 :

在 System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
在 System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
在 System .Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] 参数, CultureInfo 文化, Boolean skipVisibilityChecks)
在 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] 参数, CultureInfo 文化)
在 System.Reflection.MethodBase.Invoke(Object obj, Object[] 参数)
在 Microsoft.Synchronization.Data.ServerSyncProviderProxy.GetChanges(SyncGroupMetadata groupMetadata, SyncSession syncSession)
在 Microsoft.Synchronization.SyncAgent.DownloadChanges(SyncGroupMetadata groupMetadata)
在 Microsoft.Synchronization.SyncAgent.DataSynchronize()
在 Microsoft.Synchronization.SyncAgent.Synchronize()
在SyncSample.AccountsListing.btnSync_Click(对象发送者,EventArgs e)

4

3 回答 3

0

当我没有正确配置它以处理足够的数据时,我最近从 Web 服务中收到类似的错误,例如:maxBufferPoolSize、maxReceivedMessageSize 等。

此外,如果您要发送大型数组,这些文件的服务行为和端点行为部分可能需要:

<dataContractSerializer maxItemsInObjectGraph="array size here"/>
于 2012-11-05T23:04:04.027 回答
0

上述异常意味着由于关闭了连接而发生了意外情况,并且大多数情况下是由于服务端的一些异常导致拒绝请求。您可以为服务启用 WCF 跟踪并检查日志以确认异常。大多数情况下,异常消息会提示您出了什么问题;-)

HTH,阿米特

于 2012-11-05T14:33:43.030 回答
0

正如 Amit 建议的那样,您应该尝试启用 WCF 跟踪。您遇到的错误可能意味着服务器端发生了许多事情。

除非您正在构建 Windows Mobile 应用程序,否则我建议您使用较新的 SqlSyncProvider/SqlCeSyncProvider/SyncOrchestrator 组合,而不是较旧的 SqlCeClientSyncProvider/DBServerSyncProvider/SyncAgent(与本地数据库缓存项目项使用的相同)

如果数据大小确实是您的问题,那么较新的提供程序具有批处理功能。

于 2012-11-06T02:00:07.163 回答