Объект SyncKnowledge не передается службе WCF - PullRequest
0 голосов
/ 09 марта 2011

Я пытаюсь синхронизировать базу данных SQLCE с базой данных SQL с помощью WCF. У меня есть прокси, который наследуется от KnowledgeSyncProvider. Я переопределяю метод ниже (среди прочих)

public override ChangeBatch GetChangeBatch(uint batchSize, SyncKnowledge destinationKnowledge, out object changeDataRetriever)
{ 

GetChangesParameters changesWrapper = proxy.GetChanges(batchSize, destinationKnowledge);

...

}

Когда код GetChangesParameters changesWrapper = proxy.GetChanges(batchSize, destinationKnowledge); выполняется, я получаю следующую ошибку

Retrieving the COM class factory for component with CLSID {EC413D66-6221-4EBB-AC55-4900FB321011} failed due to the following error: 80040154.

Трассировка стека:

Server stack trace: 
   at System.ServiceModel.Channels.ServiceChannel.ThrowIfFaultUnderstood(Message reply, MessageFault fault, String action, MessageVersion version, FaultConverter faultConverter)
   at System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc)
   at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
   at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
   at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)

Exception rethrown at [0]: 
   at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
   at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
   at WCF_Sync_Common.IRelationalSyncContract.GetChanges(UInt32 batchSize, SyncKnowledge destinationKnowledge)
   at ConsoleApplication10.RelationalProviderProxy.GetChangeBatch(UInt32 batchSize, SyncKnowledge destinationKnowledge, Object& changeDataRetriever) in C:\Users\amitesh.AKL\Documents\Visual Studio 2010\Projects\ConsoleApplication10\RelationalProviderProxy.cs:line 81
   at Microsoft.Synchronization.KnowledgeProviderProxy.GetChangeBatch(UInt32 dwBatchSize, ISyncKnowledge pSyncKnowledge, ISyncChangeBatch& ppChangeBatch, Object& ppUnkDataRetriever)

Похоже, ошибка связана с объектом SyncKnowledge при передаче его по проводам. Я попытался вызвать прокси-метод без объекта SyncKnowledge и смог вызвать метод. Но как только я включаю объект, я получаю вышеуказанную ошибку. Кто-нибудь может объяснить, чтобы указать мне в правильном направлении на то, что мне не хватает

1 Ответ

0 голосов
/ 09 марта 2011

Мне удалось решить эту проблему, создав проект приложения-службы WCF и переместив весь код WCF в этот проект.Мой первоначальный проект WCF был просто обычным консольным приложением

...