Ошибка 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.Datap >
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
Ответы
Ответ 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. Это сработало для меня, это может сработать для вас.
![введите описание изображения здесь]()