16

我一直在使用“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 服务器”被选中 本地 IIS

更新: 我用控制台应用程序尝试了相同的过程,它工作正常并同步了所有数据。

我添加了以下四个对控制台应用程序的引用;

“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 版本

4

4 回答 4

14

我讨厌回答自己的问题:

如果您启动一个包含 x64 Sync Framework 程序集的 asp.net 项目,但您没有在管理员帐户下运行 Visual Studio,VS 无法加载 Snyc Framework 程序集。至少,这是我的问题..

如果您不是管理员 VS 无法正确管理“本地 IIS Web 服务器”。

另外,如果我没记错的话,即使您的操作系统是 x64,“IIS Express”也无法加载 x64 同步框架程序集。

不要费心使用“IIS express”,只需在 VS 上使用具有管理员权限的“本地 IIS Web 服务器”并为您的项目设置平台目标 x64。

在此处输入图像描述

于 2013-01-28T18:45:43.157 回答
4

我使用 64 位同步框架 DLL,并且必须在项目属性构建页面中将我的 C# 应用程序属性从为Any CPU构建到x64更改。
但随后 GUI 设计器不再显示对话框。

另一种方法是使用 32 位同步框架并在项目的构建设置中设置Prefer 32 位。

于 2015-09-23T21:54:27.860 回答
2

如果它发生在与您的开发计算机不同的计算机上,请确保您已安装 Microsoft Sync Framework - Redistributable Package。 https://www.microsoft.com/en-us/download/details.aspx?id=19502

并在下载选项中选择合适的平台(x86-x64)

于 2016-04-26T09:35:16.663 回答
0

如果您不想更改目标平台并希望将其保持为“任何”。为您的应用程序使用新的应用程序池,转到高级设置并将启用 32 位应用程序更改为 True。它对我有用,它可能对你有用。

在此处输入图像描述

于 2016-08-22T05:14:18.643 回答