我一直在使用“Microsoft Sync Framework 2.1”将两个本地 sql server 2008 数据库与一个 asp.net 项目同步。
我的代码:
SqlConnection clientConn = new SqlConnection(@"Server=XXXXXX;User ID=sa; Password=xxxx;Database=ZzzClient");
SqlConnection serverConn = new SqlConnection("Server=XXXXXX;User ID=sa; Password=xxxx;Database=ZzzServer");
SyncOrchestrator syncOrchestrator = new SyncOrchestrator();
syncOrchestrator.LocalProvider = new SqlSyncProvider("InventoryScope", clientConn);
syncOrchestrator.RemoteProvider = new SqlSyncProvider("InventoryScope", serverConn);
syncOrchestrator.Direction = SyncDirectionOrder.UploadAndDownload;
SyncOperationStatistics syncStats = syncOrchestrator.Synchronize();
但是执行Synchronize()调用时出现以下错误;
由于以下错误,检索具有 CLSID {EC413D66-6221-4EBB-AC55-4900FB321011} 的组件的 COM 类工厂失败:80040154 未注册类(HRESULT 异常:0x80040154 (REGDB_E_CLASSNOTREG))。
开发环境 VS 2012,C# asp.net 项目,框架 4.5 OS:windows 7 Home Prem。(x64)
已安装 SyncSDK-v2.1-x64-ENU。
微软同步
Microsoft.Synchronization.Data
Microsoft.Synchronization.Data.SqlServer
引用已从“C:\Program Files\Microsoft Sync Framework\2.1\Runtime”添加到项目中。
由 SqlSyncScopeProvisioning 提供的两个数据库。
我已经尝试过 x64 和 x86 的 Project Platform Target
任何想法将不胜感激....
我已将所有引用从“C:\Program Files (x86)\Microsoft SDKs\Microsoft Sync Framework”更改为“C:\Program Files\Microsoft Sync Framework\2.1\Runtime”
并将平台目标设置为 x64
“使用本地 IIS Web 服务器”被选中
更新: 我用控制台应用程序尝试了相同的过程,它工作正常并同步了所有数据。
我添加了以下四个对控制台应用程序的引用;
“c:\Program Files\Microsoft Sync Framework\2.1\Runtime\x64\Microsoft.Synchronization.dll”
c:\Program Files\Microsoft Sync Framework\2.1\Runtime\ADO.NET\V3.1\x64\Microsoft.Synchronization.Data.dll"
“c:\Program Files\Microsoft Sync Framework\2.1\Runtime\ADO.NET\V3.1\x64\Microsoft.Synchronization.Data.Server.dll”
“c:\Program Files\Microsoft Sync Framework\2.1\Runtime\ADO.NET\V3.1\x64\Microsoft.Synchronization.Data.SqlServer.dll”
并将应用程序的调试属性设置如下
相同的引用、相同的构建属性(目标为 x64)和相同的代码在 Asp.Net 项目中不起作用。
无法加载文件或程序集“WebApplication2”或其依赖项之一。试图加载格式不正确的程序。
我猜,Web 应用程序无法加载正确的程序集并尝试加载 x86 版本