16

「MicrosoftSyncFramework2.1」を使用して、2つのローカルSQLServer2008データベースを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))。

開発環境VS2012、C#asp.netプロジェクト、フレームワーク4.5 OS:windows 7HomePrem。(x64)

SyncSDK-v2.1-x64-ENUがインストールされました。

Microsoft.Synchronization

Microsoft.Synchronization.Data

Microsoft.Synchronization.Data.SqlServer

「C:\ ProgramFiles \ Microsoft SyncFramework \ 2.1\Runtime」からプロジェクトへの参照が追加されました。

SqlSyncScopeProvisioningによってプロビジョニングされた両方のデータベース。

ProjectPlatformTargetをx64とx86の両方で試しました

どんなアイデアでも大歓迎です。

プロビジョニングされたデータベース

すべての参照を「C:\ ProgramFiles(x86)\ Microsoft SDKs \ Microsoft SyncFramework」から「C:\ ProgramFiles \ Microsoft SyncFramework \ 2.1\Runtime」に変更しました

新しい参照

そして、プラットフォームターゲットをx64に設定します プラットフォームターゲット

[ローカルIISWebサーバーを使用する]が選択されている ローカルIIS

更新: コンソールアプリケーションで同じプロセスを試しましたが、正しく機能し、すべてのデータが同期されました。

コンソールアプリケーションへの次の4つの参照を追加しました。

"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"

アプリケーションのデバッグプロパティを次のように設定します コンソールアプリケーションのプロパティ

Asp.Netプロジェクトでは、同じ参照、同じビルドプロパティ(x64をターゲット)および同じコードは機能しません。

ファイルまたはアセンブリ'WebApplication2'またはその依存関係の1つを読み込めませんでした。間違った形式のプログラムを読み込もうとしました。

おそらく、Webアプリケーションは正しいアセンブリを読み込めず、x86バージョンを読み込もうとします

4

4 に答える 4

14

私は自分自身の質問に答えるのが嫌いです:

x64 Sync Framework アセンブリを含む asp.net プロジェクトを開始しても、管理者アカウントで Visual Studio を実行していない場合、VS は Snyc Framework アセンブリを読み込めません。少なくとも、それは私の問題です..

管理者でない場合、VS は「ローカル IIS Web サーバー」を適切に管理できません。

また、私が間違っていなければ、"IIS Express" は、OS が x64 であっても、x64 Sync Framework アセンブリを読み込めません。

わざわざ「IIS Express」を使用するのではなく、VS で管理者権限を持つ「ローカル IIS Web サーバー」を使用し、プロジェクトのプラットフォーム ターゲット x64 を設定します。

ここに画像の説明を入力

于 2013-01-28T18:45:43.157 に答える
2

開発マシンとは異なるコンピューターで発生した場合は、Microsoft Sync Framework - 再頒布可能パッケージがインストールされていることを確認してください。 https://www.microsoft.com/en-us/download/details.aspx?id=19502

ダウンロードオプションで適切なプラットフォームを選択します (x86-x64)

于 2016-04-26T09:35:16.663 に答える
0

ターゲット プラットフォームを変更せず、「Any」のままにしておく場合。アプリケーションに新しいアプリケーション プールを使用し、詳細設定に移動して、32 ビット アプリケーションを有効にするを True に変更します。それは私のために働いた、それはあなたのために働くかもしれません.

ここに画像の説明を入力

于 2016-08-22T05:14:18.643 に答える