Ошибка COM-кода Microsoft Sync Framework - программирование
Подтвердить что ты не робот

Ошибка COM-кода Microsoft Sync Framework

Я играл с 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();

но я получаю следующую ошибку, когда выполняется вызов Синхронизировать();

Получение COM-класса factory для компонента с CLSID {EC413D66-6221-4EBB-AC55-4900FB321011} не удалось из-за следующих ошибка: 80040154 Класс не зарегистрирован (Исключение из HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

разработка envoriement VS 2012, проект С# asp.net, структура 4.5 ОС: windows 7 Home Prem. (64)

Установлен SyncSDK-v2.1-x64-ENU.

Microsoft.Synchronization

Microsoft.Synchronization.Data​​p >

Microsoft.Synchronization.Data.SqlServer

ссылки были добавлены в проект из "C:\Program Files\Microsoft Sync Framework\2.1\Runtime".

Обе базы данных, предоставленные SqlSyncScopeProvisioning.

Я пробовал Project Platform Target как x64 ans x86

Любые идеи будут высоко оценены....

Provisioned databases

Я изменил все ссылки из "C:\Program Files (x86)\Microsoft SDKs\Microsoft Sync Framework" на "C:\Program Files\Microsoft Sync Framework\2.1\Runtime"

new references

И установите платформу Target для x64 Platform Target

"Использовать локальный веб-сервер IIS" выбран Local IIS

UPDATE: Я пробовал один и тот же процесс с консольным приложением, и он работал правильно и синхронизировал все данные.

Я добавил следующие четыре ссылки на консольное приложение:

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

и установите свойства отладки приложения следующим образом: console application's properties

В проекте Asp.Net не работают одни и те же свойства сборки (цель для x64) и один и тот же код.

Не удалось загрузить файл или сборку "WebApplication2" или один из зависимостей. Была сделана попытка загрузить программу с неправильной Формат.

Я думаю, веб-приложение не может загрузить правильные сборки и пытается загрузить версии x86

4b9b3361

Ответ 1

Я ненавижу отвечать на свои вопросы:

Если вы запустите проект asp.net, у которого есть x64 Sync Framework сборки, но вы НЕ, работающие с Visual Studio под учетной записи администратора, VS не может загружать сборки Snyc Framework. В наименее, что моя проблема..

Если вы не являетесь администратором, VS не может правильно управлять локальным веб-сервером IIS.

Также, если я не ошибаюсь, "IIS Express" не может загружать сборки x64 Sync Framework, даже если ваша ОС x64.

Не утруждайте себя использованием "IIS express", просто используйте "Local IIS Web Server" с правами администратора на VS и установить целевую платформу x64 для вашего проекта.

enter image description here

Ответ 2

Я использую 64-битные DLL файлы Sync Framework и должен был изменить свои свойства приложения С# для создания любого процессора до x64 на странице создания свойств проекта.
Но тогда дизайнер GUI больше не показывал диалоги.

Альтернативой было использование 32-битной схемы синхронизации и установка предпочтения 32 бит в настройках сборки проекта.

Ответ 3

Если это происходит на компьютере, отличном от вашего компьютера-разработчика, убедитесь, что вы установили Microsoft Sync Framework - Redistributable Package. https://www.microsoft.com/en-us/download/details.aspx?id=19502

И выберите правильную платформу в параметрах загрузки (x86-x64)

Ответ 4

Если вы не хотите менять целевую платформу и хотите сохранить ее "Любой". Используйте новый пул приложений для своего приложения, перейдите к настройкам и измените параметр Включить 32-разрядное приложение как True. Это сработало для меня, это может сработать для вас.

введите описание изображения здесь