ServiceFabric / IFabricSecretStoreClient / COM Exception - PullRequest
0 голосов
/ 09 декабря 2018

Я не особо разбираюсь в этом, и, проведя большую часть дня ... Я ищу помощи ..

Исключение, которое я получаю, это:

Невозможно преобразовать COM-объект типа 'System .__ ComObject' в интерфейсный тип 'IFabricSecretStoreClient'.Эта операция завершилась неудачно, поскольку вызов QueryInterface для компонента COM для интерфейса с IID '{38C4C723-3815-49D8-BDF2-68BFB536B8C9}' завершился ошибкой из-за следующей ошибки: такой интерфейс не поддерживается (Исключение из HRESULT: 0x80004002 (E_NOINTERFACE)).

Я могу создать прокси для Stateful Service с этим кодом:

var servicekey = new ServicePartitionKey(0);
  var queryserviceUri = new Uri("fabric:/XXXX/xxxxxxxxxx");
  var proxyHandle = ServiceProxy.Create<IAnInterfaceName>(queryserviceUri, servicekey, TargetReplicaSelector.PrimaryReplica);

Затем я использую прокси:

var result = await proxyHandle.OperationOnServiceContract(dataPackage);

В этот момент я получаю сообщение об ошибке ...

Stacktrace ...

в System.Fabric.FabricClient.CreateNativeClient (IEnumerable 1 connectionStringsLocal) at System.Fabric.Interop.Utility.<>c__DisplayClass27_0.<WrapNativeSyncInvoke>b__0() at System.Fabric.Interop.Utility.WrapNativeSyncInvoke[TResult](Func 1 func, String functionTag, String functionArgs) в System.Fabric.Interop.Utility.WrapNativeSyncInvoke (Действие действия, String functionTag, String functionArgs) в System.Fabric.Interop.Utility.RunInMTA (Действие действия) в System.Fabric.FabricClient.InitializeFabricClient (SecurityCredentials credentialArg, FabricSlitsStingSlientSlientSlientSlitingSlitingSlitingSlitingString [] hostEndpointsArg) в Microsoft.ServiceFabric.Services.Client.ServicePartitionResolver. <> C.b__21_0 () в Microsoft.ServiceFabric.Services.Client.ServicePartitionResolver.OperationRetrySettings retrySettings, CancellationToken CancellationToken) в Microsoft.ServiceFabric.Services.Remoting.V2.FabricTransport.Client.FabricTransportServiceRemotingClientFactory.GetClientAsync (Uri serviceUri, ServicePartitionKey PartitionKey, targetReplicaSelector targetReplicaSelector, String listenerName, OperationRetrySettings retrySettings, CancellationToken CancellationToken) в Microsoft.ServiceFabric.Services.Communication.Client.ServicePartitionClient 1.GetCommunicationClientAsync(CancellationToken cancellationToken) at Microsoft.ServiceFabric.Services.Communication.Client.ServicePartitionClient 1.InvokeWithRetryAsync [TResult] (задача Func 2 func, CancellationToken cancellationToken, Type[] doNotRetryExceptionTypes) at Microsoft.ServiceFabric.Services.Remoting.V2.Client.ServiceRemotingPartitionClient.InvokeAsync(IServiceRemotingRequestMessage remotingRequestMessage, String methodName, CancellationToken cancellationToken) at Microsoft.ServiceFabric.Services.Remoting.Builder.ProxyBase.InvokeAsyncV2(Int32 interfaceId, Int32 methodId, String methodName, IServiceRemotingRequestMessageBody requestMsgBodyValue, CancellationToken cancellationToken) at Microsoft.ServiceFabric.Services.Remoting.Builder.ProxyBase.ContinueWithResultV2[TRetval](Int32 interfaceId, Int32 methodId, Task 1) в XXXXWeb.Controllers.XXXController.OperationOnServiceContract (XXXRequest xxxRexxest) в C: \ Source \ xp.Web \ Контроллеры \ XXXController.cs: строка 44

о, я использую это для слушателя:

protected override IEnumerable<ServiceReplicaListener> CreateServiceReplicaListeners()
{
  return this.CreateServiceRemotingReplicaListeners();
}

1 Ответ

0 голосов
/ 11 декабря 2018

Как отмечено по этим вопросам:

Эти проблемы с COM возникают, когда вы используете новые пакеты Nuget, предназначенные для более старой версии сервиса.во время работы ткани возникает такая ошибка.

Вы всегда должны использовать пакеты, ориентированные на одну и ту же версию среды выполнения вашего кластера , в последнем случае используйте пакет, более старый, чем версия кластера.

...