2013-01-25 30 views
14

Tôi đã chơi với "Microsoft Sync Framework 2.1" để đồng bộ hóa hai cơ sở dữ liệu máy chủ sql máy chủ cục bộ 2008 với một dự án asp.net.Lỗi lớp COM Microsoft COM lỗi

mã của tôi:

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(); 

nhưng tôi nhận được lỗi sau khi Synchronize() cuộc gọi được thực hiện;

Retrieving the COM class factory for component with CLSID {EC413D66-6221-4EBB-AC55-4900FB321011} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

phát triển envoriement VS 2012, C# asp.net project, framework 4.5 Hệ điều hành: windows 7 Home Prem. (x64)

SyncSDK-v2.1-x64-ENU đã được cài đặt.

Microsoft.Synchronization

Microsoft.Synchronization.Data

Microsoft.Synchronization.Data.SqlServer

tài liệu tham khảo đã được thêm vào dự án từ "C: \ Program Files \ Microsoft Sync Framework \ 2.1 \ Thời gian chạy ".

Cả hai cơ sở dữ liệu được cung cấp bởi SqlSyncScopeProvisioning.

Tôi đã thử Dự án Nền Đích cả x64 ans x86

Bất kỳ ý tưởng sẽ được đánh giá rất nhiều ....

Provisioned databases

Tôi đã thay đổi tất cả các tài liệu tham khảo từ "C: \ Program Files (x86) \ Microsoft SDKs \ Microsoft Sync Framework "tới" C: \ Program Files \ Microsoft Sync Framework \ 2.1 \ Thời gian chạy "

new references

Và thiết lập các mục tiêu nền tảng để x64 Platform Target

"Sử dụng IIS Local Web Server" được chọn Local IIS

UPDATE: tôi đã cố gắng cùng một quá trình với một ứng dụng giao diện điều khiển và nó hoạt động đúng và đồng bộ hóa tất cả dữ liệu.

Tôi đã thêm bốn tham chiếu sau vào ứng dụng bảng điều khiển;

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

và thiết lập các thuộc debug của ứng dụng như sau console application's properties

Cùng tham khảo, cùng xây dựng tài sản (mục tiêu x64) và cùng một mã không làm việc cho . trong dự án Asp.Net

Could not load file or assembly 'WebApplication2' or one of its dependencies. An attempt was made to load a program with an incorrect format.

tôi đoán, ứng dụng web không thể tải lắp ráp chính xác và cố gắng để tải các phiên bản x86

+0

không nên tham chiếu hội đồng trong Program Files thay vì Program Files (x86)? bạn đang chạy nó trong IIS hoặc máy chủ web VS? – JuneT

+0

Tôi đã thử cả hai. Nếu tôi thêm các tham chiếu này thông qua VS add-reference, nó xuất phát từ Program Files (x86) \ Microsoft SDKs \ Microsoft Sync Framework \ 2.1 \ Runtime. Tôi tự xóa "Program Files (x86)" và thêm một cái mới với trình duyệt từ C: \ Program Files \ Microsoft Sync Framework \ 2.1 \ Runtime \ x64. Cùng một kết quả .... –

+0

VS 2012 cho thấy và thêm "Microsoft.Synchronization" lắp ráp từ "Program Files (x86)" nhưng thay vì đó nếu tôi tự thêm cụm từ "C: \ Program Files \ Microsoft Sync Framework \ 2.1 \ Runtime \ x64 ", tôi nhận được" Không thể tải tập tin hoặc lắp ráp 'DataAccess' hoặc một trong những phụ thuộc của nó. Một nỗ lực đã được thực hiện để tải một chương trình với một định dạng không chính xác. " lỗi. –

Trả lời

11

tôi ghét trả lời câu hỏi của riêng tôi:

If you start an asp.net project which has x64 Sync Framework assemblies but you are NOT running Visual Studio under the administrator account, VS can not load Snyc Framework assemblies. At least, that's my problem..

Nếu bạn không phải là quản trị viên VS không thể quản lý "Local IIS Web Server" đúng cách.

Ngoài ra nếu tôi không sai, "IIS Express" không thể tải x64 đồng bộ khung hội đồng ngay cả khi hệ điều hành của bạn là x64.

Do not bother to use "IIS express" just use "Local IIS Web Server" with administrator rights on VS and set platform target x64 for your project.

enter image description here

4

tôi sử dụng 64bit Sync Framework DLL và đã phải thay đổi thuộc tính # ứng dụng C của tôi từ việc xây dựng cho Bất kỳ CPU-x64 trong các thuộc tính dự án xây dựng trang web.
Nhưng sau đó trình thiết kế GUI không hiển thị hộp thoại nữa.

Cách khác là sử dụng Khung đồng bộ 32 bit và đặt Ưu tiên 32 bit trong cài đặt bản dựng của dự án.

2

Nếu nó xảy ra trong một máy tính khác với máy tính của bạn, hãy chắc chắn bạn đã cài đặt Microsoft Sync Framework - Redistributable Package. https://www.microsoft.com/en-us/download/details.aspx?id=19502

Và chọn đúng các nền tảng trong các tùy chọn tải về (x86-x64)

0

Nếu bạn không muốn thay đổi nền tảng mục tiêu của bạn và muốn giữ nó "Bất kỳ". Sử dụng một hồ bơi ứng dụng mới cho ứng dụng của bạn, chuyển đến cài đặt nâng cao và thay đổi Bật ứng dụng 32 bit là True. Nó làm việc cho tôi, nó có thể làm việc cho bạn.

enter image description here