帮助调试Microsoft Sync Framework应用程序中的“调用目标”错误

时间:2011-06-14 18:41:44

标签: frameworks sql-server-ce sync

我正在编写一个应用程序,它使用MS Sync Framework将桌面WPF应用程序中的本地数据库(SQLCe)通过WCF Web服务同步到远程服务器。这是我第一次使用Sync Framework和作为Visual Studio项目(不是服务器托管的数据库)的一部分包含的SQLCe数据库,因此,我不知道有关正确设置的一些很多信息。应用

我的同步客户端库有一个包含在项目中的SQLCe数据库。我已经创建了数据库但是,我没有创建任何表格等等...我的理解是表格将在第一次同步时创建。

我编写了一个简单的测试应用程序,其中包含一个带有按钮的表单。它引用包含同步客户端DLL的库。因此,当单击按钮时,我实例化从SyncAgent继承的MyAppSyncAgent对象。 MyAppSyncAgent的构造函数实例化一个SyncGroup对象,然后,对于源数据库的每个表,它创建一个SyncTable对象(CreationOption = DropExistingOrCreateNewTable),设置SyncDirection,设置SyncTable的SyncGroup并将SyncTable加到this.Configuration.SyncTables。一旦SyngAgent对象被实例化,我就调用它的Synchronize()方法。

我正在接收构造函数运行后出现的“调用目标引发的异常”错误。这是调用堆栈的顶部:

System.Reflection.TargetInvocationException未处理   Message =调用目标抛出了异常。   来源= mscorlib程序   堆栈跟踪:        在System.RuntimeMethodHandle._InvokeMethodFast(IRuntimeMethodInfo方法,Object target,Object []参数,SignatureStruct& sig,MethodAttributes methodAttributes,RuntimeType typeOwner)        在System.RuntimeMethodHandle.InvokeMethodFast(IRuntimeMethodInfo方法,Object target,Object []参数,Signature sig,MethodAttributes methodAttributes,RuntimeType 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文化)        在Microsoft.Synchronization.Data.ServerSyncProviderProxy.GetSchema(Collection`1 tableNames,SyncSession syncSession)        在Microsoft.Synchronization.SyncAgent.InitClientSchema()        在Microsoft.Synchronization.SyncAgent.DataSynchronize()

似乎GetSchema是罪魁祸首,但是,导致它失败的原因是什么?我怎样才能获得更多信息?谁能建议一些调试技术?我可以为此主题提供更多信息,以帮助您更准确地了解正在发生的事情吗?

我很感激你能给出的任何建议。

1 个答案:

答案 0 :(得分:0)

尝试启用Sync Fx Tracing。检查您是否也正确配置了WCF服务。