我一直在使用“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))。
开发envoriement VS 2012,C#asp.net项目,框架4.5 操作系统:Windows 7 Home Prem。 (64)
已安装SyncSDK-v2.1-x64-ENU。
Microsoft.Synchronization
Microsoft.Synchronization.Data
Microsoft.Synchronization.Data.SqlServer
引用已从“C:\ Program Files \ Microsoft Sync Framework \ 2.1 \ Runtime”添加到项目中。
由SqlSyncScopeProvisioning配置的两个数据库。
我已经尝试了Project Platform Target x64 ans x86
任何想法都会受到高度赞赏....
我已将“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版本
答案 0 :(得分:12)
我讨厌回答我自己的问题:
如果你启动了一个拥有x64 Sync Framework的asp.net项目 程序集,但你不运行Visual Studio下的 管理员帐户,VS无法加载Snyc Framework程序集。在 至少,这是我的问题......
如果您不是管理员,则无法正常管理“本地IIS Web服务器”。
此外,如果我没错,即使您的操作系统是x64,“IIS Express”也无法加载x64 Sync Framework程序集。
不要费心使用“IIS express”只使用“本地IIS Web服务器” 拥有VS的管理员权限并为您的项目设置平台目标x64。
答案 1 :(得分:4)
我使用64位Sync Framework DLL,并且必须在项目属性构建页面中将我的C#app属性从构建 Any CPU 更改为 x64 。 但是GUI设计师不再显示对话框了。
另一种方法是使用32位Sync Framework并在项目的构建设置中设置 Prefer 32bit 。
答案 2 :(得分:2)
如果它发生在与您的开发计算机不同的计算机上,请确保已安装Microsoft Sync Framework - Redistributable Package。 https://www.microsoft.com/en-us/download/details.aspx?id=19502
在下载选项中选择正确的平台(x86-x64)
答案 3 :(得分:0)