【发布时间】:2013-01-09 06:51:11
【问题描述】:
我一直在玩“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 的组件的 COM 类工厂 {EC413D66-6221-4EBB-AC55-4900FB321011} 由于以下原因而失败 错误:80040154 类未注册(HRESULT 异常: 0x80040154 (REGDB_E_CLASSNOTREG))。
开发环境 VS 2012,C# asp.net 项目,框架 4.5 操作系统:Windows 7 Home Prem。 (x64)
已安装 SyncSDK-v2.1-x64-ENU。
Microsoft.同步
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 版本
【问题讨论】:
-
引用程序集不应该在 Program Files 而不是 Program Files (x86) 中吗?你是在 IIS 还是 VS Web 服务器上运行它?
-
我都试过了。如果我通过 VS add-reference 添加这些引用,它来自 Program Files (x86)\Microsoft SDKs\Microsoft Sync Framework\2.1\Runtime。我手动删除了“Program Files (x86)”之一,并通过从 C:\Program Files\Microsoft Sync Framework\2.1\Runtime\x64 浏览添加了一个新的。同样的结果......
-
VS 2012 显示并从“Program Files (x86)”添加了“Microsoft.Synchronization”程序集,但如果我从“C:\Program Files\Microsoft Sync Framework\2.1\ Runtime\x64" ,我得到“无法加载文件或程序集 'DataAccess' 或其依赖项之一。试图加载格式不正确的程序。”错误。
-
您的 IIS 是否在 64 位运行?
-
是的,它在同一操作系统上,即“Windows 7 Home Prem. (x64)”。程序集在 WindowsForms 应用程序上工作。和控制台应用程序。正确但 asp.net.
标签: c# .net microsoft-sync-framework