我正在使用Visual Studio 2010& SQL Server 2008 R2。我创建了一个项目,使用WCF服务将SQL Server CE(*.sdf
)文件同步到SQL Server。
当我有一个小的SQL Server CE文件(18 MB)时工作正常,但当我尝试使用大型SQL Server CE文件(38 MB)进行同步时,则会发生错误。
我在WCF服务的web.config
中增加了许多参数的大小。我的申请app.config
。
但错误一直在发生......
底层连接已关闭:连接已关闭 出乎意料。
StackTrace:
at System.RuntimeMethodHandle._InvokeMethodFast(Object target,Object [] arguments,SignatureStruct& sig,MethodAttributes methodAttributes,RuntimeTypeHandle typeOwner)
at System.RuntimeMethodHandle.InvokeMethodFast(Object target,Object [] arguments,Signature sig,MethodAttributes methodAttributes,RuntimeTypeHandle typeOwner)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj,BindingFlags invokeAttr,Binder binder,Object [] parameters,CultureInfo culture,Boolean skipVisibilityChecks)
在System.Reflection.RuntimeMethodInfo.Invoke(Object obj,BindingFlags invokeAttr,Binder binder,Object []参数,CultureInfo文化)
在System.Reflection.MethodBase.Invoke(Object obj,Object [] parameters)
在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(Object sender,EventArgs e)
答案 0 :(得分:0)
上述异常意味着由于哪个连接被关闭而发生意外事件,并且大部分时间是由于服务端的某些异常导致拒绝请求。您可以为服务启用WCF跟踪,并检查日志以确认异常。大多数情况下,异常消息表明您出了什么问题; - )
HTH, 阿米特
答案 1 :(得分:0)
当我没有正确配置它以处理足够的数据时,我最近从Web服务收到这样的错误,例如:maxBufferPoolSize,maxReceivedMessageSize等。
此外,如果您要发送大型数组,则可能需要这些文件的服务行为和端点行为部分:
<dataContractSerializer maxItemsInObjectGraph="array size here"/>
答案 2 :(得分:0)
正如Amit建议的那样,您应该尝试启用WCF跟踪。你得到的错误可能意味着服务器端发生了很多事情。
除非您正在构建Windows Mobile应用程序,否则我建议您使用较新的SqlSyncProvider / SqlCeSyncProvider / SyncOrchestrator组合,而不是旧的SqlCeClientSyncProvider / DBServerSyncProvider / SyncAgent(与本地数据库缓存项目项目使用的相同)
如果数据大小确实是您的问题,则较新的提供商具有围绕批处理的功能。